SuperAPI AI 工具集

re-riscv

通用与其它

查看项目

更新于 10-16 05:06

技能介绍

用途:面向 RV32/RV64 架构二进制的逆向分析,包括 Linux 用户态程序、裸机固件与 RISC-V MCU 固件(如 ESP32-C3 类 RV32IMC)。不适用于 ARM/x86/MIPS 等其他架构,也不用于仅解包固件或分析文件系统。

主要能力:架构与字节序确认(RV32/RV64、小端为主);RVC 压缩指令混编流识别(2/4 字节,勿按固定 4 字节切割);gp 相对寻址恢复(lui+addi 设置 gp,lw/ld off(gp) 访问 .sdata/.sbss);ABI 识别(ilp32/lp64 及 f/d 浮点后缀,a0-a7 参数约定,e_flags 浮点 ABI 掩码 0x6);ecall 系统调用边界(Linux 下号在 a7,用 asm-generic 编号;裸机为 SBI 或厂商自定义语义);工具链与库函数指纹(glibc/musl/newlib、指令扩展特征)。

使用方式:先用 file/readelf 确认架构与 e_flags;用 Ghidra 或 IDA 反编译(Ghidra 内置 RISC-V 模块自动处理 RVC);用 riscv64-linux-gnu-objdump 或 riscv64-unknown-elf-objdump 反汇编;用 qemu-riscv64/qemu-riscv32 做用户态动态验证(-L 指定 rootfs,-strace 跟踪系统调用);裸机用 qemu-system-riscv 或 Unicorn;gdb-multiarch 交叉调试。动态执行默认沙箱与网络隔离。

限制:裸机无固定向量表,入口需查 SoC datasheet 或 QEMU virt 的 MROM 0x1000;ecall 语义随运行环境变化,无 OS 时不可套用 Linux 编号;链接器 relax 会改变指令尺寸,应以最终链接产物为准;不同浮点 ABI 的 object 不能混合链接。具体工具版本与平台支持以官方页面为准。