JSVMP 反编译

2026-04-01

将 VMP 中的字节码,重新构建成 AST ,实现对 JSVMP 代码进行还原

参考内容 BV1bFXPBWEgzopen in new window

预处理

  • 基础准备: 使用 AST 去除 OB 混淆,编码混淆等基础混淆内容
  • 常量池还原: 代码中读取的常量数组内的常量转换成 AST 节点
  • 定位虚拟机与关键参数: 明确 索引(PC),堆栈 等变量
  • 保持整体架构不变,仅指令解析时需要手动处理(switch外的整体内容保持不变,指令中保护的代码才是关键的代码)

分支还原

不同分支在虚拟机中的表现不同,根据具体情况而定。此处结合行号查看

  • if
    // 其他语句
    if (test) {
        pc = 
    }  else {
        pc = 
    }
    // 其他语句