问题描述
我想分析一个庞大而混乱的 JS 代码。代码被严重混淆,甚至 JStillery 之类的工具都无法使用它。
我想以某种方式构建一个开放的 JS 解释器,在浏览器外运行它并以更传统的方式调试,如有必要,在解释器内应用补丁。
遗憾的是,该代码使用 DOM,没有浏览器无法执行。
问题是:是否有任何已知的技术可以采用任何外部引擎(例如 V7、V8、DukTape、JerryScript、MuJS、quad-wheel、QuickJS、tiny-js 等)并运行其中包含对 DOM 和其他浏览器部分的调用的代码?
解决方法
DOM 有纯 JavaScript 实现,例如 https://github.com/jsdom/jsdom。不确定这对您的用例有多大用处,但它确实解决了您的主要问题:它允许您运行假定浏览器环境之外的浏览器环境的 JavaScript。
我相信 jsdom 在它的实现上是相当准确的;还有其他更像模拟的实现。无论哪种方式,可能仍然存在一些差异,因此严重混淆的代码很可能包含检测模拟环境的机制......