|
马上注册,结交更多郧西好友
您需要 登录 才可以下载或查看,没有帐号?注册
x
---------------------------------------------------------------------------------
“KillBox”用PEID查得是ASPack 212 -> Alexey Solodovnikov
1、单步跟踪法
2、ESP定律法
00424001 K> 60 pushad //入口,看到关键提示大家就应该惊醒了,单步F8
00424002 E8 03000000 call KillBox0042400A //到这里,注意寄存器提示ESP=0012FFA4
00424007 - E9 EB045D45 jmp 459F44F7
0042400C 55 push ebp
0042400D C3 retn
命令行下断hr 0012FFA4,F9运行!
3、内存镜像法
首先Alt+M打开内存镜像
找到rsrc区段
内存映射,项目 29
地址=004D3000
大小=00241000 (2363392)
宿主=登陆器 00400000
区段=rsrc //F2下断,Shift+F9运行!
包含=resources
类型=Imag 01001002
访问=R
初始访问=RWE
继续
内存映射,项目 22
地址=00401000
大小=000BB000 (765952)
宿主=登陆器 00400000
区段=CODE //F2下断,Shift+F9运行!直接到达OEP!
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE
********************************************************************************************
"登陆器"其实是一个ASPack的变形壳
今天我们使用2种方法快速搞定它!
一、ESP定律法
二、内存断点法
******************************************************************************************************
一、ESP定律法
OD载入程序
00717082 登陆> 60 pushad //入口,看到关键提示大家就应该惊醒了,单步F8
00717083 E8 00000000 call 登陆器00717088 //到这里,注意寄存器提示ESP=0012FFA4
00717088 5D pop ebp
00717089 81ED B6A4450>sub ebp,登陆器0045A4B6
0071708F 8DBD B0A4450>lea edi,dword ptr ss:[ebp+45A4B0]
00717095 81EF 8200000>sub edi,82
命令行下断hr 0012FFA4,F9运行!
00717374 - FFE0 jmp eax ; 登陆器00714001 //到这里,单步F8
00717376 42 inc edx
00717377 4B dec ebx
00717378 2E:44 inc esp
0071737A 41 inc ecx
00714001 60 pushad //来到这里,仍然是关键提示,单步F8
00714002 E8 03000000 call 登陆器0071400A //到这里,ESP=0012FFA4(和上面的一样),由于上一个硬件断点没删除所以到这里我们直接F9就可以了!
00714007 - E9 EB045D45 jmp 45CE44F7
0071400C 55 push ebp
0071400D C3 retn
007143B0 /75 08 jnz short 登陆器007143BA //到这里!删除断点,F8
007143B2 |B8 01000000 mov eax,1
007143B7 |C2 0C00 retn 0C
007143BA \68 D8BD4B00 push 登陆器004BBDD8
007143BF C3 retn //返回到 004BBDD8 (登陆器004BBDD8),程序的OEP!
004BBDD8 55 push ebp //OEP,看入口代码特征就知道程序是Delphi写的
004BBDD9 8BEC mov ebp,esp
004BBDDB 83C4 F0 add esp,-10
004BBDDE B8 98B94B00 mov eax,登陆器004BB998
004BBDE3 E8 BCA5F4FF call 登陆器004063A4
004BBDE8 A1 7CE84B00 mov eax,dword ptr ds:[4BE87C]
004BBDED 8B00 mov eax,dword ptr ds:[eax]
004BBDEF E8 1073FAFF call 登陆器00463104
在此LordPE完全Dump!请出Import来修复下!OEP处填BBDD8--自动搜索IAT--获取输入表(全部有效)--FixDump!
测试正常运行,用PEID查看是Borland Delphi 60 - 70写的
好了,ESP定律法就到这里,下面介绍的是内存断点法
******************************************************************************************************
二、内存断点法
重新载入下吧,来实行我们的内存断点法
首先Alt+M打开内存镜像
找到rsrc区段
内存映射,项目 29
地址=004D3000
大小=00241000 (2363392)
宿主=登陆器 00400000
区段=rsrc //F2下断,Shift+F9运行!
包含=resources
类型=Imag 01001002
访问=R
初始访问=RWE
77F764F3 66:8B50 0C mov dx,word ptr ds:[eax+C] //来到这里,我们不用管它
77F764F7 8995 6CFFFFF>mov dword ptr ss:[ebp-94],edx
77F764FD 8D70 10 lea esi,dword ptr ds:[eax+10]
77F76500 89B5 68FFFFF>mov dword ptr ss:[ebp-98],esi
77F76506 66:F747 02 F>test word ptr ds:[edi+2],0FFFF
再次Alt+M打开内存镜像
找到code区段或者是text区段(因为编写语言不一样所以区段名称的一样的,一般是00401000段)
内存映射,项目 22
地址=00401000
大小=000BB000 (765952)
宿主=登陆器 00400000
区段=CODE //F2下断,Shift+F9运行!直接到达OEP!
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE
004BBDD8 55 push ebp //OEP,看入口代码特征就知道程序是Delphi写的
004BBDD9 8BEC mov ebp,esp
004BBDDB 83C4 F0 add esp,-10
004BBDDE B8 98B94B00 mov eax,登陆器004BB998
004BBDE3 E8 BCA5F4FF call 登陆器004063A4
004BBDE8 A1 7CE84B00 mov eax,dword ptr ds:[4BE87C]
在此LordPE完全Dump!请出Import来修复下!OEP处填BBDD8--自动搜索IAT--获取输入表(全部有效)--FixDump!
测试正常运行,用PEID查看是Borland Delphi 60 - 70写的 |
|