- UID
- 77505
注册时间2014-9-3
阅读权限10
最后登录1970-1-1
周游历练

TA的每日心情 | 擦汗 2022-12-5 14:15 |
---|
签到天数: 34 天 [LV.5]常住居民I
|
论坛脱壳这块比较冷清,刚好本人在学这方面的,于是把过程写了下,菜鸟文章,大牛路过。VMP版本很老了,主要为练手。
最近在看天草的VMP和他乡的VMP教程,感觉都是脚本党啊,看了只能明白一些东西,有很多很模糊的概念,他乡这个纯碎是只讲操作不讲原理,坑爹,幸好没买他的教程,不然亏死。
因为想练习一下脱这壳,于是上菲凡下了这个东西练手:
EP:
007C3B5E > 68 394693A7 PUSH 0xA7934639
007C3B63 E8 D3541900 CALL PhotoDat.0095903B
007C3B68 68 7C3C930F PUSH 0xF933C7C
007C3B6D E8 C9541900 CALL PhotoDat.0095903B
007C3B72 82EB 7A SUB BL, 0x7A
007C3B75 C2 F0A7 RETN 0xA7F0
不确定是哪个版本,先尝试一下:
virtualProtect 下断点(这个断点教程都有,但为什么用这个却没一个说明。。{:soso_e101:}),具体找这个的理由我分析有2个:
1.因为原来的代码段是只读,但是由於VMP把代码压缩到另一个位置,要还原这些代码,必须先把代码段变成可读写
2.我用ollydbg的TC命令,第一个调用API的地方也是VirtualProtect,但也有可能是GetModuleHande
利用vritualprotect,然后看看保护的地方,当代码段还原为readonly,则是返回时机了,这时对.text下内存访问断点,然后F9几下,直到来到.text段的位置(或者是代码像OEP的地方,代码会很整齐的)
这里找到的OEP的RVA是:0019F46C,看到入口是DELPHI,没被抽取,庆幸。
于是,到这里看看第一调用CALL,发现第一个API是GetModuleHande,被处理成jmp xxxx,xxxx是VMP段的位置了。
因为在之前看过kissy的脚本,于是改了下,将入口点和生成API地址的地方记下来,跑脚本修复。
这个过程中因为有好些地址出现了JMP 到一些并没有意义的指令里,于是,个人调了很多次,将无意义的地方记下来,如果找到这些地方就不执行。
后面终於修复成功.
调试了下,发现是网络验证,暂时没能破解,待后面有时间再爆它菊花吧。{:soso_e113:}
看了后续版本的VMP脱壳教程,感觉难了不少,不过继续努力吧,相信能脱掉它的外衣。
附上脚本
|
|