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'

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...