用途:面向 Zig 编译产物的逆向分析,识别产物特征、还原错误处理路径与 C ABI 边界,并在 Zig/C 混合产物中区分 Zig 侧代码。不适用于 C/C++ 产物(有 RTTI/异常表)或只需普通函数逻辑的场景。
主要能力:产物识别(panic 函数链、std 符号模式、无 C++ RTTI/异常表);符号可见性与启动路径分析(_start → std.start → main,业务函数多为 LOCAL);panic/错误处理路径分析(错误联合布局、catch/orelse 错误码比较、@errorName 错误名还原);comptime 与泛型展开的行为分析;C ABI 边界区分(@extern/@cImport 导入、export fn 导出、调用约定);stripped/ReleaseFast 兜底。
使用方式:用 readelf -s 查符号,用 readelf -S 查异常表节,用 llvm-nm 查可见性,用 llvm-objdump/objdump 反汇编定位 panic 调用点与错误码比较,用 strings 定位错误名与格式串,配合 Ghidra/IDA 反编译,可选 zig 编译器同版本对照。判别组合为:无 .gcc_except_table + 无 __gxx_personality_v0 + 无 _ZTV*。
限制:comptime 展开导致符号与源码不对应,需按行为分析;panic 链命名随版本变化(0.14+ 重构为 debug.panicExtra/defaultPanic);错误联合布局随版本变化,错误码恒为 u16;纯 Zig 内部函数不能视为 C ABI,应以调用点实际用法推断原型;无异常表不代表无错误处理。具体命令与跨域引用细节以资料为主,其他安装验证与环境信息暂未提供。