怎样还原被混淆的JavaScript代码

richardzae
  • 59

之前在某游戏页面上看到一些不错的交互效果,用Chrome开发者工具进行查看的时候,发现变量和函数名被优化成为a,b,c等单字母,请问一下这个是用Grunt里面的grunt-contrib-uglify进行压缩和混淆的吗?请问怎样才能把这些处理过后的代码还原成未进行混淆的源码呢?

回复
阅读 8.7k
2 个回答
lazyboy
  • 1.5k
✓ 已被采纳

Grunt里面的grunt-contrib-uglify可以进行类似的压缩和混淆,但是还有其他的工具也可以,例如Yahoo YUI Compressor,所以说不一定是那工具出来的。

早期的混淆是采用eval的机制来混淆的,把源代码的结构用 eval 改的面目全非,这个过程是可逆的。

而类似grunt-contrib-uglify这样的工具可以用自定义的符号对代码进行混淆,如果不知道自定义的符号 key,过程是不可逆的。

而后一种方式有点像谍战中的通过“代号”找人一样,打个比方:
我党的地下工作者有:xx(不告诉你名字) -> 三爷 xx(不告诉你名字) -> 四儿,这个名单中统并不知道,所以名字不能告诉你
中统获得一件情报:三爷打算5点去找人联络,请你告诉我,三爷是谁?

部分内容参考自:【知乎】在 JavaScript 开发中怎样做代码混淆?

除非它提供了压缩对应的键值表,否则还原基本是不肯能的,最多用chrome跟你格式化下。

宣传栏