View8
View8
是一个静态分析工具,旨在将序列化的V8字节码对象(JSC文件)反编译为高级可读代码。View8使用经过修补的已编译V8二进制文件来解析和反汇编这些序列化对象。因此,View8生成的文本输出类似于JavaScript。
要求
- Python 3.x
- 反汇编器二进制文件。可用版本:
- V8版本
9.4.146.24
(用于Node V16.x) - V8版本
10.2.154.26
(用于Node V18.x) - V8版本
11.3.244.8
(用于Node V20.x)
对于已编译版本,请访问发布页面。
使用方法
命令行参数
input_file
:输入文件名。output_file
:输出文件名。--path
,-p
:反汇编器二进制文件的路径(可选)。--disassembled
,-d
:指示输入文件是否已经反汇编(可选)。--export_format
,-e
:指定导出格式。选项包括v8_opcode
、translated
和decompiled
。可以组合多个选项(可选,默认:decompiled
)。
基本用法
反编译V8字节码文件并导出反编译的代码:
python view8.py input_file output_file
反汇编器路径
默认情况下,view8
会检测输入文件的V8字节码版本(使用VersionDetector.exe
),并自动在Bin
文件夹中搜索兼容的反汇编器二进制文件。要指定不同的反汇编器二进制文件,请使用--path
(或-p
)选项:
python view8.py input_file output_file --path /path/to/disassembler
处理已反汇编的文件
要跳过反汇编过程并提供已反汇编的文件作为输入,请使用--disassembled
(或-d
)标志:
python view8.py input_file output_file --disassembled
导出格式
使用--export_format
(或-e
)选项指定导出格式。您可以组合多种格式:
v8_opcode
translated
decompiled
例如,要并排导出V8操作码和反编译的代码:
python view8.py input_file output_file -e v8_opcode decompiled
默认使用的格式是decompiled
。
VersionDetector.exe
V8字节码版本以哈希形式存储在文件开头。以下是VersionDetector.exe
可用的选项:
-h
:获取一个版本并返回其哈希值。-d
:获取一个哈希值(小端序)并使用暴力方法返回其对应的版本。-f
:获取一个文件并返回其版本。