好友
阅读权限25
听众
最后登录1970-1-1
|
本帖最后由 wangdongdexin 于 2013-11-22 13:07 编辑
手工打造穿山甲脱壳适合初学者 闲话不多说!!
IDA,">目标程序: gua8.0.0423.545.2
下载页面: http://www.qqhxwg.com
软件大小: 25 MB
软件类别: 国产软件 / 收费 /游戏外挂
应用平台: Windows2000/XP/2000
软件介绍:华夏猎手- 为避免杀毒软件误杀,在下载前最好先将杀软关闭,下载后将软件解压缩,要记住软件所在的目录,然后将gua.exe和gua.dll放入杀软的白名单;
- 使用时先打开游戏,在出现人物选择时再开外挂,即gua.exe,如果要开多个游戏就再这样执行一次操作,开一个游戏,开一个外挂;
- 猎手是绑定游戏帐号的,也就是只认游戏帐号,同一帐号在不同区都可以使用猎手;
- 人物进入游戏后会出现以下资料,游戏界面上也会有状态显示
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教
一、先用PEID查壳
很清楚Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks
二、开始脱壳
首先用OD载入 设置OllyDbg忽略所有异常选项。用IsDebug插件去掉OllyDBG的调试器标志。
00732379 >/$ 55 push ebp //载入OllyDBG后暂停在这
0073237A |. 8BEC mov ebp,esp
0073237C |. 6A FF push -0x1
0073237E |. 68 78727500 push Gua.00757278
00732383 |. 68 601D7300 push Gua.00731D60 ; SE 处理程序安装
00732388 |. 64:A1 0000000>mov eax,dword ptr fs:[0]
0073238E |. 50 push eax
0073238F |. 64:8925 00000>mov dword ptr fs:[0],esp
00732396 |. 83EC 58 sub esp,0x58
00732399 |. 53 push ebx
0073239A |. 56 push esi
0073239B |. 57 push edi ; ntdll.7C930228
0073239C |. 8965 E8 mov [local.6],esp
0073239F |. FF15 4C417500 call dword ptr ds:[<&KERNEL32.GetVersion>; kernel32.GetVersion
007323A5 |. 33D2 xor edx,edx ; ntdll.KiFastSystemCallRet
007323A7 |. 8AD4 mov dl,ah
007323A9 |. 8915 447C7500 mov dword ptr ds:[0x757C44],edx ; ntdll.KiFastSystemCallRet
007323AF |. 8BC8 mov ecx,eax
007323B1 |. 81E1 FF000000 and ecx,0xFF
007323B7 |. 890D 407C7500 mov dword ptr ds:[0x757C40],ecx
下断:HE GetModuleHandleA+5
Shift+F9,注意观察中断时的堆栈
7C80B746 837D 08 00 cmp dword ptr ss:[ebp+0x8],0x0 //Shift+F9,断在这里
7C80B74A 74 18 je short kernel32.7C80B764
7C80B74C FF75 08 push dword ptr ss:[ebp+0x8]
7C80B74F E8 C0290000 call kernel32.7C80E114
7C80B754 85C0 test eax,eax
7C80B756 74 08 je short kernel32.7C80B760
7C80B758 FF70 04 push dword ptr ds:[eax+0x4]
7C80B75B E8 7D2D0000 call kernel32.GetModuleHandleW
7C80B760 5D pop ebp ; 0012FFC0
7C80B761 C2 0400 retn 0x4
7C80B764 64:A1 18000000 mov eax,dword ptr fs:[0x18]
7C80B76A 8B40 30 mov eax,dword ptr ds:[eax+0x30]
7C80B76D 8B40 08 mov eax,dword ptr ds:[eax+0x8]
7C80B770 ^ EB EE jmp short kernel32.7C80B760
7C80B772 90 nop
0012C27C /0012C508 //N次F9后堆栈显示(我的是6次以后到了这里)
0012C280 |00F05331 返回到 00F05331 来自 kernel32.GetModuleHandleA
0012C284 |0012C3BC ASCII "kernel32.dll"
0012C288 |00000002
0012C28C |00F91A28
0012C290 |00000000
0012C294 |80000000
是时候该ALT+F9返回了
F2取消断点 ALT+F9返回 程序到这来:
00F0534A 50 push eax ; kernel32.7C800000
00F0534B FF15 B850F200 call dword ptr ds:[0xF250B8] ; kernel32.LoadLibraryA
00F05351 8B0D 60D8F200 mov ecx,dword ptr ds:[0xF2D860]
00F05357 89040E mov dword ptr ds:[esi+ecx],eax ; kernel32.7C800000
00F0535A A1 60D8F200 mov eax,dword ptr ds:[0xF2D860]
00F0535F 393C06 cmp dword ptr ds:[esi+eax],edi
00F05362 0F84 AD000000 je 00F05415 //这就是我们要找的Magic Jump跳了
00F05368 33C9 xor ecx,ecx ; kernel32.7C80E6CB
00F0536A 8B03 mov eax,dword ptr ds:[ebx]
00F0536C 3938 cmp dword ptr ds:[eax],edi
00F0536E 74 06 je short 00F05376
00F05370 41 inc ecx ; kernel32.7C80E6CB
00F05371 83C0 0C add eax,0xC
00F05374 ^ EB F6 jmp short 00F0536C
00F05362 0F84 AD000000 je 00F05415 把JE改成JMP
下断:BP GetCurrentThreadId
也可以使用Second段内存断点大法走至OEP啦。
Shift+F9 运行 继续N次(本人的3次)后堆栈显示:
0012F5A8 00F1CF2D /CALL 到 GetCurrentThreadId 来自 00F1CF27
0012F5AC 0012FF2C
0012F5B0 00000000
0012F5B4 7FFD4000
0012F5B8 007294E9 返回到 Gua.007294E9 来自 00F1CEBA
0012F5BC 00757718 Gua.00757718
按ALT+F9返回 来到:
00F1CF2D A3 F018F300 mov dword ptr ds:[0xF318F0],eax
00F1CF32 E8 2487FEFF call 00F0565B
00F1CF37 6A 00 push 0x0
00F1CF39 E8 4BD9FEFF call 00F0A889
00F1CF3E 59 pop ecx ; 0012FF2C
00F1CF3F E8 7D39FFFF call 00F108C1
00F1CF44 8BF8 mov edi,eax
00F1CF46 A1 E018F300 mov eax,dword ptr ds:[0xF318E0]
00F1CF4B 8B48 74 mov ecx,dword ptr ds:[eax+0x74]
00F1CF4E 3348 5C xor ecx,dword ptr ds:[eax+0x5C]
00F1CF51 3308 xor ecx,dword ptr ds:[eax]
00F1CF53 03F9 add edi,ecx
00F1CF55 8B0E mov ecx,dword ptr ds:[esi]
00F1CF57 85C9 test ecx,ecx
00F1CF59 75 2E jnz short 00F1CF89
接着我们就F8慢慢跟踪吧!!!!
当看到:
0F1CFAC FFD7 call edi //这里按F7进入 哈哈就是OEP了 接下来就可以脱壳了(*^__^*) 嘻嘻……
00F1CFAE 8BD8 mov ebx,eax
004018B8 /EB 10 jmp short Gua.004018CA //传说中的OEP了 (哈哈终于找到你了,心中暗喜…………)
004018BA |66:623A bound di,dword ptr ds:[edx]
004018BD |43 inc ebx
004018BE |2B2B sub ebp,dword ptr ds:[ebx]
004018C0 |48 dec eax ; Gua.00754258
004018C1 |4F dec edi ; Gua.004018B8
004018C2 |4F dec edi ; Gua.004018B8
004018C3 |4B dec ebx
004018C4 |90 nop
004018C5 -|E9 98006300 jmp 00A31962
004018CA \A1 8B006300 mov eax,dword ptr ds:[0x63008B]
004018CF C1E0 02 shl eax,0x2
004018D2 A3 8F006300 mov dword ptr ds:[0x63008F],eax ; Gua.00754258
004018D7 52 push edx
004018D8 6A 00 push 0x0
004018DA E8 BDCB2200 call Gua.0062E49C
004018DF 8BD0 mov edx,eax ; Gua.00754258
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|