前言
练习了一些简单的压缩壳的脱壳, 总结一下压缩壳脱壳操作.
记录
查壳工具
Detect-It-Easy-master 比 PEID0.95好, 虽然有些壳也认不出来.
即使查壳工具认不出来, OD载入后, 也能看出OEP不是正常的入口. 有转到后面进行解压的过程.
使用查壳工具是为了确实是否有壳, 没有其他用途. 不用也是可以的, 反正都是手工脱壳.
anti-debug
StrongOD插件可以不用的, 先从插件目录移除.
有的壳代码中有anti-debug代码, 可以去看雪上找HideOd插件(hideod.rar), 加入OD插件目录, 启动OD后, 点击hideOD设置, 将反anti的选项都勾上.
ESP定律
F7, F8都可以走到OEP, 用的时间多一些.
大部分压缩壳, 用ESP定律可以找到OEP.
在OD中走不多远, 可以看到ebp入栈.
当程序跑起来后, 停下来时, 就到了OEP附近, 走不多远, 就跳到了OEP.
经常逆vc的程序, 走到OEP时, 就认识了.
然后dump.
手工F7, F8找OEP
有的压缩壳, 无法用ESP定律
* 没有push有趣的ebp, 也没有pushad
* 也没有转到其他的跨段节去解压, 都是在一个节内(e.g. 0040xxxx)解压和跳转.
这时, 手工F8, F7去跟吧, 当有长跳转时(JMP或CALL), 注意一下, 看是否为正常的OEP代码.
DUMP插件
脱壳要在x86环境下脱壳(因为脱的是x86程序).
看雪上有ODdump插件, OllyDump.rar
走到OEP后, 用OdDump插件脱壳, 脱2个版本(重建导入表和不重建导入表), 看哪个能运行就用那个版本, 如果都能用, 就选不重建导入表的版本.
PE减肥
大部分场景对程序的size要求的都不严格, 脱壳后, 能正常运行就可以.
当脱壳完成后, 可以尝试给PE减肥, 不一定会成功(减肥后运行PE报错).
减肥是可选的, 减肥工具用PETools.
将壳自己用的节删掉, PE体积就小了, 看看是否能运行. 不能运行就不要减肥了.
PE重建
PE重建也是为了减肥, 也是可选的.
用PETools来进行PE重建, 在看雪大礼包2010中有.
PE重建后, 也有可能运行报错. 如果报错, 就不用重建了.
脱壳后的PE头参数校对
当程序到达OEP时, 先脱壳, 然后留在那, 等PE减肥和PE重建时, 打开OD中的MemoryView, 找到.text中的PE头信息, 和PETools的可选头信息对一下, 如果PETools的可选头信息不对, 按照OD显示的PE头信息修正一下.