使用源映射对缩小的JS进行反混淆处理

时间:2015-04-05 23:11:04

标签: javascript minify source-maps deobfuscation

源地图有助于对先前使用Closure / Uglifyjs缩小的代码进行反混淆处理吗?

源地图的工作方式是否存在真正的障碍,或者仅仅是因为没有人关心它?我不太确定它是否可以以类似的方式调试编译语言中的符号(广泛用于反编译二进制文件)。

我对开发人员的观点感兴趣。很高兴知道对源地图的未授权访问是否可能导致无阻碍的代码借用。

1 个答案:

答案 0 :(得分:10)

JavaScript源映射与编译语言中的调试符号非常相似。事实上,Source Map Revision 3 Proposal的三个既定目标中有两个是:

  
      
  • 支持源级调试,允许双向映射
  •   
  • 支持服务器端堆栈跟踪反混淆
  •   

因此,未经授权访问源地图肯定会导致反混淆。

有一个名为maximize的Node包,它可以使用源映射对缩小的JavaScript进行反混淆。

请注意,当前版本的maxim(0.0.1)不适用于falafel 1.0.0+。您需要克隆maximize git repo并进行以下更改:

--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
   },
   "dependencies": {
     "argparse": "*",
-    "falafel": "*",
+    "falafel": "0.3.1",
     "js-beautify": "*",
     "seq": "*",
     "source-map": "*"

这将允许您在示例中尝试最大化:
http://dev.fontdragr.com/scripts/scripts.js

另请参阅:Can I re-construct the original JavaScript source file from a minified version and the corresponding source-map file?