我想编写一个程序来扫描javascript代码,并用简短的,无意义的标识符替换变量名,而不会破坏代码。
我知道YUI compresser和google的闭包编译器可以做到这一点。我想知道如何实现这个目标?
是否有必要构建抽象语法树?如果没有,我如何找到重命名的候选变量?
答案 0 :(得分:3)
大多数现代javascript压缩器实际上都是编译器。他们将javascript输入解析为抽象语法树,对树执行操作(一些安全,一些不安全),然后使用语法树打印出代码。 Uglify和Closure-Compiler都是真正的编译器。
实现自己的编译器是一个大型项目,需要很好的计算理论知识。 dragon book是一个很好的资源,可以从中开始。
您可以利用现有的工作。我建议从non-optimizing compiler开始作为参考。
答案 1 :(得分:0)
我为打击脚本做了http://www.whak.ca到无法辨认的混淆,而 75算法已经准备好让您对代码进行模糊处理。 http://www.whak.ca/packer/上还有 20压缩 JavaScript压缩程序,它们会混淆您的代码。如果有人希望您的代码足够糟糕,这些都可以进行逆向工程。但人们可以选择锁,但我们仍然锁门......