- UID
- 33849
注册时间2007-8-9
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 郁闷 2016-6-2 14:04 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
原帖:https://www.chinapyg.com/viewthr ... page%3D1&page=1
查壳:FSG2.0
脱壳:很多方法,我常用2种;
1,脚本脱壳,FLY老大的脚本,直接找到OEP。
2,手动,F8一直步过,找到类似:
004001CF /75 03 jnz short CrackMe0.004001D4 //跳到004001D4,正好漏过jmp dword ptr ds:[ebx+C]
004001D1 |FF63 0C jmp dword ptr ds:[ebx+C] //这就是跳到OEP
004001D4 \50 push eax
图1:
然后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:[46A990]
004689F1 8B00 mov eax,dword ptr ds:[eax]
004689F3 E8 B4AAFEFF call CrackMe0.004534AC
004689F8 A1 90A94600 mov eax,dword ptr ds:[46A990]
004689FD 8B00 mov eax,dword ptr ds:[eax]
004689FF BA 3C8A4600 mov edx,CrackMe0.00468A3C
00468A04 E8 B3A6FEFF call CrackMe0.004530BC
00468A09 8B0D 84A74600 mov ecx,dword ptr ds:[46A784] ; CrackMe0.0046BC08
00468A0F A1 90A94600 mov eax,dword ptr ds:[46A990]
00468A14 8B00 mov eax,dword ptr ds:[eax]
00468A16 8B15 C07E4600 mov edx,dword ptr ds:[467EC0] ; CrackMe0.00467F0C
00468A1C E8 A3AAFEFF call CrackMe0.004534C4
00468A21 A1 90A94600 mov eax,dword ptr ds:[46A990]
---------------
00468A09 8B0D 84A74600 mov ecx,dword ptr ds:[46A784] ; CrackMe0.0046BC08
看到这样的代码了嘛.调用了一个函数在[46A784] ,括号内的就该内存地址调用该函数.
那么就在该位置下硬件断点.
补充下:其实后面没有调用函数的代码行也可以达到同样效果,至于为啥,那我就不知道了。这时我们再看内存窗口:
好,关键时候到了,现在开始找RAV.
向上一直到出了调用函数区.
即如这样的形式:
0046A6C8 DE72AB5D
0046A6CC 3FD1A855
0046A6D0 00468170 CrackMe0.00468170//6A6D0 就是RAV
0046A6D4 00468184 CrackMe0.00468184
向下一直也出调用函数区:
如:
0046AB00 00406B20 CrackMe0.00406B20
0046AB04 00406C08 CrackMe0.00406C08 //记下0046AB04 ,这个计算SIZE
0046AB08 00000000
0046AB0C 00000000
至于SIZE一般是
0046AB04-0046A6D0=434
就是刚才那个末地址-初地址
算出的地址比较小,我这里也不知道为什么不能用,因此我就放大,最后放大5000,成功,因此大家可以多试几次SIZE.
好了到此基本就可以正确修复了.
首先,打开importREC,选择CM1.
图2
改:
OEP=689DC RVA=6A6D0 SIZE=5000
搜索:IAT,完成.
然后,再次改RVA=6A6D0 SIZE=5000
获得输入信息,完成.
然后,CUT无效函数.
最后,抓取修复文件.
运行程序OK...
查壳...Borland Delphi 6.0 - 7.0 无壳,到此结束.
请高手指点,谢谢.
[ 本帖最后由 指舞瞬间 于 2008-2-24 12:56 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|