SuperAPI AI 工具集

re-address-space

通用与其它

查看项目

更新于 10-15 21:34

技能介绍

本技能用于统一处理各类地址换算问题,适合出现「地址对不上」的场景:反编译器显示地址与运行时地址、查找结果不一致,或需要确定 PIE/ASLR 运行态基址、互转 RVA 与 VA、处理固件加载地址与链接地址差异、在 Ghidra/angr/frida/gdb 之间对齐地址。不适用仅读取 ELF 头节表或细查运行时内存布局的情况。使用方式为分步操作:先静态确定文件侧基址,用 readelf -l target | grep LOAD 取首个 LOAD 段 p_vaddr 作为链接基址,用 readelf -h target | grep Type 区分 EXEC 固定基址与 DYN(PIE);文件偏移与 VA 按段映射换算 VA = p_vaddr + (file_offset - p_offset),不要全文件线性换算;RVA 与 VA 在 PE 语境下用 RVA = VA - ImageBase、VA = RVA + ImageBase,ELF 无统一 ImageBase,改用链接基址加段偏移。运行态基址可通过 cat /proc/<pid>/maps 取首个映射起点,或 gdb -p <pid> -ex 'info proc mappings' -ex detach,frida 用 Process.getModuleByName("libtarget.so").base;运行时地址 = 链接地址 + load bias,bias 由运行时基址减链接基址得到,PIE 下每次运行不同必须动态获取。跨工具对齐时,Ghidra 地址加 bias 等于运行时地址,angr 用 proj.loader.main_object.mapped_base,gdb/frida 以运行时基址为准。固件场景先读头部或启动代码确认加载地址,实际地址 = 链接地址 + loader_offset。常见坑包括把 PIE 链接基址当运行时地址、把文件偏移当虚拟地址、固件链接地址与加载地址混淆、各工具默认基址不同导致同一符号多套数值。工具方面需准备 readelf/objdump、gdb、python3,使用前应先验证。本资料未提供收费、价格、平台或效果等相关信息。