从uglifyjs源图中恢复javascript源代码

时间:2015-08-23 01:52:36

标签: javascript obfuscation uglifyjs source-maps deobfuscation

我正在逆向工程一个神奇的脚本。我有一个由 uglifyjs 生成的 lified源代码和源地图

有没有人知道如何从直接的方式如何实现至少部分可读的源代码?我发现了一些不起眼的方法,包括通过多种语言进行转换,但我希望更好的存在。

谢谢!

4 个答案:

答案 0 :(得分:4)

有一个名为maximize的npm库声称可以做到这一点,但我无法让它工作。我把它重写为unsourcemap,但我不是一个Node JS开发人员,所以我确定它很糟糕。无论如何,这是source-map npm包的一个非常简单的应用。

一旦你完成了安装node-js和nvm以及诸如此类的所有繁琐工作,你就可以克隆那个repo并说:

npm install . -g
unsourcemap path/to/packed.js path/to/packed.js.map path/to/output-dir/

我不想保留这个东西,所以如果有人想改进它,请把它分开并指出人们。 : - )

答案 1 :(得分:0)

如果使用webpack / browserify捆绑了项目,则可以使用Debundle package进行反向工程。 恕我直言,结果会好坏取决于某些项目。

并且因为它仅反编译JS(丑陋的webpack管道),所以如果您使用Vue SFC,则Debundle无法生成您的原始.vue文件,而是JS文件。

如果在阅读源代码的情况下,如果您的网页没有隐藏源地图文件,则可以使用Chrome DevTool> Source面板轻松读取漂亮的源代码:

Chrome DevTool - Source pannel

答案 2 :(得分:0)

检查这个简单的 NodeJS 实现: 它获取带有嵌入式源映射的编译文件并对其进行解析。 仅修改和提供地图文件很容易。

const fs = require('fs');
const { SourceMapConsumer } = require("source-map");

fs.readFile('./example.js', 'utf8' , (err, data) => {
  if (err) return console.error(err);

  const sourceMapData = data.split('//# sourceMappingURL=data:application/json;base64,')[1];
  let buff = new Buffer.from(sourceMapData, 'base64');
  let rawSourceMap = buff.toString('ascii');

  const parsed = SourceMapConsumer(rawSourceMap);

  fs.writeFile('example.ts', parsed.sourcesContent, function (err) {
    if (err) return console.log(err);
  });
});

答案 3 :(得分:-1)

有一些工具可以帮助解决这个问题。我之前使用过http://www.cleancss.com/javascript-beautify/http://jsbeautifier.org/,效果很好。如果您在Google中快速搜索JavaScript Beautifier,您会发现许多类似的结果。希望这有帮助!