OD打开程序 发现可以使用esp定律的方式脱壳
程序运行一步 在esp上下断点 然后直接运行程序
就会跑到popad的下一句 这是因为壳代码在执行前会保存源程序寄存器的环境 为了能正确运行原程序的功能 就要用pushad保存源程序的寄存器环境 在壳代码执行完毕后要执行源程序代码前就要恢复寄存器环境 所以发现popad也就离源程序的入口点不远了 让我们继续单步
单步到ret
ret以后 再结合我们的特征看 有看到有call jmp
回车进入call 第一个调用的api还是GetsystemTimeAsFileTime
结合特征看 是vs release版的程序 连接器版本是12.0 所以是vs2013的程序
接下来dump出来
程序还是无法运行的 因为需要修复导入表 这就用到了我们的ImpREC这个工具
最后可以成功运行了 但是要关闭随机基地址
到此这个壳就脱掉了