启动外部 JS 引擎,从浏览器转发数据

问题描述

我想分析一个庞大而混乱的 JS 代码。代码被严重混淆,甚至 JStillery 之类的工具都无法使用它。

我想以某种方式构建一个开放的 JS 解释器,在浏览器外运行它并以更传统的方式调试,如有必要,在解释器内应用补丁。

遗憾的是,该代码使用 DOM,没有浏览器无法执行。

问题是:是否有任何已知的技术可以采用任何外部引擎(例如 V7、V8、DukTape、JerryScript、MuJS、quad-wheel、QuickJS、tiny-js 等)并运行其中包含对 DOM 和其他浏览器部分的调用的代码?

解决方法

DOM 有纯 JavaScript 实现,例如 https://github.com/jsdom/jsdom。不确定这对您的用例有多大用处,但它确实解决了您的主要问题:它允许您运行假定浏览器环境之外的浏览器环境的 JavaScript。

我相信 jsdom 在它的实现上是相当准确的;还有其他更像模拟的实现。无论哪种方式,可能仍然存在一些差异,因此严重混淆的代码很可能包含检测模拟环境的机制......

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...