使用源映射反混淆压缩的JS

12

源映射是否能帮助解混淆之前使用Closure/Uglifyjs压缩的代码?

源映射机制是否存在实际障碍,还是只是因为没有人关注它而不存在?我不太确定它是否可以像编译语言中的调试符号一样工作(调试符号广泛用于反编译二进制文件)。

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


1
答案是“是”。 - GolezTrol
1个回答

17
JavaScript源映射非常类似于编译语言中的调试符号。实际上,Source Map Revision 3 Proposal 的三个声明目标中有两个是:
  • 支持源代码级别的调试,允许双向映射
  • 支持服务器端堆栈跟踪去混淆
因此,未经授权访问源映射肯定会导致去混淆。
有一个名为maximize的Node包可以使用源映射去混淆压缩的JavaScript。
请注意,maximize的当前版本(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

另请参阅:我能否从缩小的版本和相应的源映射文件重新构建原始JavaScript源文件?


1
这正是我所寻找的,我将用它来测试我的项目,谢谢。 - Estus Flask
还需要进行一次修改:"source-map": "~0.5.6" - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接