对飘云老大的CM1的手动脱壳(FSG2.0)
原帖:https://www.chinapyg.com/viewthread.php?tid=2781&extra=page%3D1&page=1查壳:FSG2.0
脱壳:很多方法,我常用2种;
1,脚本脱壳,FLY老大的脚本,直接找到OEP。
2,手动,F8一直步过,找到类似:
004001CF /75 03 jnz short CrackMe0.004001D4 //跳到004001D4,正好漏过jmp dword ptr ds:
004001D1 |FF63 0C jmp dword ptr ds: //这就是跳到OEP
004001D4 \50 push eax
图1:https://www.chinapyg.com/attachment.php?aid=24251
然后DUMP.
这里不要关OD,因为一会还要用的.
这都很简单,主要是修复问题,这之前,我对找RAV,SIZE很不解.看了很多教程也没看明白,我这里通俗说一次,希望给我这样的菜鸟帮助.
好了,言归正传.
DUMP后就是修复iat.
现在我们去找RAV,SIZE.
首先再次回到没关闭的OD
注意:这里我说下找RAV的具体方法
004689DC 55 push ebp ; This is the OEP! Found By: fly
004689DD 8BEC mov ebp,esp
004689DF 83C4 F0 add esp,-10
004689E2 B8 E4874600 mov eax,CrackMe0.004687E4
004689E7 E8 74D2F9FF call CrackMe0.00405C60 ; SFX 代码真实入口点
004689EC A1 90A94600 mov eax,dword ptr ds:
004689F1 8B00 mov eax,dword ptr ds:
004689F3 E8 B4AAFEFF call CrackMe0.004534AC
004689F8 A1 90A94600 mov eax,dword ptr ds:
004689FD 8B00 mov eax,dword ptr ds:
004689FF BA 3C8A4600 mov edx,CrackMe0.00468A3C
00468A04 E8 B3A6FEFF call CrackMe0.004530BC
00468A09 8B0D 84A74600 mov ecx,dword ptr ds: ; CrackMe0.0046BC08
00468A0F A1 90A94600 mov eax,dword ptr ds:
00468A14 8B00 mov eax,dword ptr ds:
00468A16 8B15 C07E4600 mov edx,dword ptr ds: ; CrackMe0.00467F0C
00468A1C E8 A3AAFEFF call CrackMe0.004534C4
00468A21 A1 90A94600 mov eax,dword ptr ds:
---------------
00468A09 8B0D 84A74600 mov ecx,dword ptr ds: ; CrackMe0.0046BC08
看到这样的代码了嘛.调用了一个函数在 ,括号内的就该内存地址调用该函数.
那么就在该位置下硬件断点.
补充下:其实后面没有调用函数的代码行也可以达到同样效果,至于为啥,那我就不知道了。这时我们再看内存窗口:
https://www.chinapyg.com/attachment.php?aid=24252
好,关键时候到了,现在开始找RAV.
向上一直到出了调用函数区.
即如这样的形式:
0046A6C8DE72AB5D
0046A6CC3FD1A855
0046A6D000468170CrackMe0.00468170//6A6D0 就是RAV
0046A6D400468184CrackMe0.00468184
向下一直也出调用函数区:
如:
0046AB0000406B20CrackMe0.00406B20
0046AB0400406C08CrackMe0.00406C08//记下0046AB04 ,这个计算SIZE
0046AB0800000000
0046AB0C00000000
至于SIZE一般是
0046AB04-0046A6D0=434
就是刚才那个末地址-初地址
算出的地址比较小,我这里也不知道为什么不能用,因此我就放大,最后放大5000,成功,因此大家可以多试几次SIZE.
好了到此基本就可以正确修复了.
首先,打开importREC,选择CM1.
图2https://www.chinapyg.com/attachment.php?aid=24250
改:
OEP=689DC RVA=6A6D0 SIZE=5000
搜索:IAT,完成.
然后,再次改RVA=6A6D0 SIZE=5000
获得输入信息,完成.
然后,CUT无效函数.
最后,抓取修复文件.
运行程序OK...
查壳...Borland Delphi 6.0 - 7.0 无壳,到此结束.
请高手指点,谢谢.
[ 本帖最后由 指舞瞬间 于 2008-2-24 12:56 编辑 ]
页:
[1]