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

Deobfuscation of minified JS with source maps

source maps 能否帮助对之前使用 Closure/Uglifyjs 缩小的代码进行去混淆处理?

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

我对开发者角度的答案很感兴趣。很高兴知道未经授权访问源映射是否可能导致无障碍代码借用。

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

  • Support source level debugging allowing bidirectional mapping
  • Support server side stack trace deobfuscation

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

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

请注意,当前版本的 maximize (0.0.1) 不适用于 falafel 1.0.0+. You will need to clone the 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?