Tol*_*a E 15 obfuscation node.js uglifyjs uglifyjs2
我需要尽可能地混淆我的源代码所以我决定使用uglifyjs2 ..现在我有了嵌套目录的项目结构,如何通过uglifyjs2运行它来完成整个项目,而不是给它所有的输入文件?
我不介意它是否将整个项目缩小为单个文件或其他东西
我在一个项目中做了一些非常类似的事情.您有两种选择:
将文件保留在其目录结构中.
这是迄今为止更容易的选择,但提供了更低级别的混淆,因为对您的代码足够感兴趣的人基本上拥有文件逻辑组织的副本.
攻击者可以简单地打印所有文件并重命名每个文件中的混淆变量名称,直到他们了解正在发生的事情为止.
要执行此操作,请使用fs.readdir和fs.stat递归遍历文件夹,读入每个.js文件并输出损坏的代码.
将所有内容编译为单个JS文件.
这对您来说实施起来要困难得多,但确实会让攻击者的生活更加艰难,因为他们不再受益于您项目的组织.
您的主要问题是将require调用与不再存在的文件进行协调(因为现在所有文件都在同一个文件中).
我通过使用Uglify通过分析AST来调用我的源代码来执行静态分析require.然后我加载了所需文件的源代码并重复.
加载完所有代码后,我require用调用自定义函数替换调用,将每个文件的源代码包装在一个模拟节点模块系统工作方式的函数中,然后将所有内容复制并编译成单个文件.
我的自定义require函数执行节点所需的大部分功能,除了搜索磁盘中的模块,它搜索包装器函数.
不幸的是,我不能真正共享#2的任何代码,因为它是专有项目的一部分,但要点是:
UglifyJS.parse.使用它TreeWalker来访问AST的每个节点并检查是否
node instanceof UglifyJS.AST_Call && node.start.value == 'require'
Run Code Online (Sandbox Code Playgroud)由于我刚刚在80多个文件中完成了一个巨大的纯Nodejs项目,因此我遇到了与OP相同的问题.我至少需要对我的辛勤工作提供最低限度的保护,但NPMjs OS社区似乎没有涵盖这个非常基本的需求.添加盐对伤害JXCore包加密系统上周在几个小时内被破解,所以回到混淆...
所以我创建了完整的解决方案,处理文件合并,uglifying.您可以选择从合并中省略指定的文件/文件夹.然后将这些文件复制到合并文件的新输出位置,并自动重写对它们的引用.
PS:如果人们愿意做出更好的贡献,我会很高兴的.这是小偷和像你一样的辛勤工作者之间的战争.让我们加入我们的力量,增加逆向工程的痛苦!
| 归档时间: |
|
| 查看次数: |
10770 次 |
| 最近记录: |