Node.js 在整个节点项目上使用UglifyJs?
我需要尽可能地混淆我的源代码,所以我决定使用uglifyjs2。。现在我有了嵌套目录的项目结构,我如何通过uglifyjs2运行它来完成整个项目,而不是给它所有的输入文件Node.js 在整个节点项目上使用UglifyJs?,node.js,obfuscation,uglifyjs,uglifyjs2,Node.js,Obfuscation,Uglifyjs,Uglifyjs2,我需要尽可能地混淆我的源代码,所以我决定使用uglifyjs2。。现在我有了嵌套目录的项目结构,我如何通过uglifyjs2运行它来完成整个项目,而不是给它所有的输入文件 我不介意它是否将整个项目缩小为一个文件或什么的我在我工作的项目中做过类似的事情。您有两个选择: 将文件保留在其目录结构中。 到目前为止,这是一个更简单的选择,但提供了一个低得多的混淆级别,因为对您的代码感兴趣的人基本上拥有文件逻辑组织的副本 攻击者可以简单地打印所有文件并重命名每个文件中模糊的变量名,直到他们了解发生了什么 为
我不介意它是否将整个项目缩小为一个文件或什么的我在我工作的项目中做过类似的事情。您有两个选择:
fs.readdir
和fs.stat
递归浏览文件夹,读取每个.js文件并输出损坏的代码require
调用与不再存在的文件协调(因为现在所有内容都在同一个文件中)
为此,我使用Uglify对源代码执行静态分析,分析对require
的for调用。然后,我加载了所需文件的源代码并重复
加载所有代码后,我将require
调用替换为对自定义函数的调用,将每个文件的源代码包装在一个模拟函数中,然后将所有内容都破坏并编译成一个文件
我的自定义require函数完成了节点require的大部分功能,除了搜索包装函数而不是在磁盘上搜索模块- 使用将源文本解析为AST
- 使用访问AST的每个节点并检查
node instanceof UglifyJS.AST_Call && node.start.value == 'require'
附言:如果人们能做出贡献,让它变得更好,我会很高兴。这是一场小偷和像你这样努力工作的程序员之间的战争。让我们联合起来,增加逆向工程的痛苦 我也有同样的需求——为此我创建了
节点优化
和grunt节点优化
uglifyjs2本机不支持这一点 考虑使用将整个应用程序打包成一个小型的.js文件,不包括
node\u模块
:
为什么不编写一个shell脚本来循环遍历所有文件,并为每个文件调用您的模糊处理程序?@wiredparie我想将它们全部合并到一个文件中。。另外,不同的模糊处理会破坏每个文件对彼此的引用。我认为,由于文件名发生变化,如果将所有文件放在一起,如何使节点正常工作?(
require('../mylib/lib1')
)@wiredparie我希望uglify/minify工具能够处理这个问题不,它不会解决这个问题。你可能想看看在javascript文件中使用Grunt来完成一个丑陋的任务。但您应该能够将节点优化
包装到一个gulp库中。如果您这样做了,我将在节点优化
的自述文件中添加一个注释。