用途:对识别为简单压缩壳(UPX/ASPack/FSG 等)的样本脱壳,得到干净样本继续静态或动态分析;也作为未知壳手动流程的第一步尝试。强壳或虚拟化壳(VMProtect/Themida)不适用,应转高级脱壳流程;目标已确认无壳则直接做二进制分析。
主要能力:官方自动解包(upx -d sample.exe -o unpacked.exe,配合 file、sha256sum 验证);ESP 定律定位 OEP(入口 pushad 后对 ESP 所指地址下硬件访问断点,运行至 popad 后找 jmp 目标);内存断点法(对 VirtualAlloc 分配区或解压目标节设访问断点,适用于无 pushad、多 stub、多阶段解密);转储(Linux/Wine 用 gcore -o out <pid>,Windows 用 x64dbg 配合 Scylla);IAT 修复(Scylla 或 ImpREC 的 Autosearch、Get Imports、Fix Dump)。
使用方式:先按 triage 记录脱壳基线(SHA256、PE timestamp、EP RVA、section hash、import table),脱壳后逐项对照判定成败。工具准备包括 upx(apt install upx-ucl、brew install upx 等)、gdb 或 x64dbg、Scylla。操作顺序为自动解包、ESP 定律或内存断点找 OEP、解密完成后转储、IAT 修复、反编译与沙箱复跑验证。
适用场景:简单压缩壳样本、需要干净样本继续分析、恶意样本加壳后脱壳再行为分析。
限制:ESP 定律仅适用于入口为 pushad/popad 周期的单线程压缩壳,对 TLS 回调壳、多线程壳、虚拟化壳无效;第一次执行解密区域不等于 OEP,需验证真实代码特征;转储过早会得到壳初始状态;IAT 不修会导致导入表解析失败;自校验、TLS 回调、重定位、异常表、Load Config 等机制可能需额外修复;脱壳产物验证必须在沙箱进行。