工具
jsc-decompile-mozjs-34 SpiderMonkey 字节码反编译器
用 PHP 编写的 SpiderMonkey 34 JavaScript 字节码解码与反编译工具,README 称它可能可以处理 cocos2d-x 编译生成的 .jsc 文件。它解析以 XDR 序列化的脚本及其中的原子(atom)、常量、对象、正则表达式和 try/作用域注记,依据 SpiderMonkey 34 的操作码表解码指令,并为每个函数上下文重建近似的 JavaScript 代码;另一个脚本则改为输出解码后的操作序列。作者称该项目尚未完成,可作为理解 JavaScript 虚拟机工作方式的示例。
- 目标
- 应用 · 游戏
- 类别
- JavaScript 与 Electron 工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 没有发布版本;最后一次提交在 2021-07-27,修复了全局变量和对象初始化相关的操作码,README 称项目可能不再更新且尚未完成。它面向 SpiderMonkey 34 的字节码:README 指出不同 SpiderMonkey 版本的操作码各不相同,列出了字节码版本 33 至 47 的魔数,并说明工具不检查魔数,因此相近版本的文件可能部分可解码。
- 需要 PHP 7.0 或更高版本(README 称在 7.4 上仍可运行),并先执行 composer install,该步骤只生成自动加载文件。php run.php 输出每个脚本上下文重建出的代码;对无法反编译的文件,php scan.php 会输出原子、解码后的操作、常量和正则表达式。输入的 .jsc 文件由使用者提供;仓库不含样例文件或测试,源码中也没有解密或解压步骤,因此只能读取未经处理的 XDR 字节码。
- README 报告在反编译深层嵌套的上下文时存在严重缺陷,并称输出无法直接运行,编译器丢弃的局部变量名会以自动生成的名称代替,因此结果应与 scan.php 输出的操作序列对照核实。仓库没有许可证文件,composer.json 将该包声明为 proprietary,因此仓库未授予任何复用条款;恢复出的脚本仍受应用权利人的权利约束。本次未运行任何内容,也未反编译任何字节码;所审来源未确立与 REA 的关联。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- readme.md GitHub · irelance/jsc-decompile-mozjs-34 · 修订 44ffa1b
- composer.json GitHub · irelance/jsc-decompile-mozjs-34 · 修订 44ffa1b
- run.php GitHub · irelance/jsc-decompile-mozjs-34 · 修订 44ffa1b
- scan.php GitHub · irelance/jsc-decompile-mozjs-34 · 修订 44ffa1b
- src/Decompile.php GitHub · irelance/jsc-decompile-mozjs-34 · 修订 44ffa1b
- src/Constant.php GitHub · irelance/jsc-decompile-mozjs-34 · 修订 44ffa1b
- src/Xdr GitHub · irelance/jsc-decompile-mozjs-34 · 修订 44ffa1b