微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 在整个Node项目中使用UglifyJs?

我需要尽可能地模糊我的源代码,所以我决定使用uglifyjs2 ..现在我有项目结构有嵌套目录,我如何可以通过uglifyjs2运行它来完成整个项目而不是给它所有的输入文件

我不介意如果将整个项目缩小成单个文件或其他东西

解决方法

我在一个项目中做了非常类似的事情.你有两个选择:

>将文件保留在其目录结构中.

这是迄今为止更容易的选项,但是提供了更低级别的混淆,因为在您的代码中有足够的兴趣基本上具有文件逻辑组织的副本.

攻击者可以简单地漂亮打印所有文件,并重命名每个文件中的模糊变量名,直到他们了解发生了什么.

为此,请使用fs.readdir和fs.stat递归地浏览文件夹,读取每个.js文件输出被破坏的代码.
>将所有内容编译成单个JS文件.

这对您来说更难实施,但是确实使攻击者的生活变得更加困难,因为他们不再受益于项目的组织.

您的主要问题是将您的require调用与不再存在的文件进行协调(因为所有内容现在都在同一个文件中).

我通过使用Uglify通过分析AST的呼叫来执行静态分析我的源代码.然后我加载所需文件的源代码并重复.

一旦所有的代码被加载,我用一个自定义函数调用替换了require调用,将每个文件的源代码包装在一个模拟how node’s module system works函数中,然后把所有的代码都编译成一个文件.

我的自定义需求功能大部分是节点需要的,除了搜索磁盘的模块,而是搜索包装器函数.

不幸的是,由于它是专有项目的一部分,因此我无法真正共享#2的代码,但主旨是:

>使用UglifyJS.parse将源文本解析为AST.
>使用TreeWalker访问AST的每个节点,并检查是否

node instanceof UglifyJS.AST_Call && node.start.value == 'require'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐