2009/4/17

Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks

大家好,我叫清风 QQ:113917362

今天带来个很简单的一个破解汉化教程,软件来自天草的脱壳教程,无聊破了一下,也教下刚学破解的朋友一点简单的汉化知识,教程没有技术含量,高手请飞过

脱这个壳主要还是要看OD版本才行,刚开始我也不知道为什么同样操作,就是跟作者的不一样!后来发现这一点问题,顺便跟刚学破解一点提醒
bp OpenMutexA

---------------------------------------------
1.查壳

穿山甲Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks

OD 载入 忽略所有异常,插件隐藏OD


004C2000 > 60 pushad
004C2001 E8 00000000 call ASFConve.004C2006
004C2006 5D pop ebp
004C2007 50 push eax
004C2008 51 push ecx
004C2009 0FCA bswap edx
004C200B F7D2 not edx
004C200D 9C pushfd
004C200E F7D2 not edx

-------------------------------------------------------------------------
下bp GetModuleHandleA+5断点后按SHIFT+F9运行,每次都要注意堆栈

-------------------------------------------------------------------------

第1次按SHIFT+F9运行后堆栈出现:
0013FF10 004AF4CB 返回到 ASFConve.004AF4CB 来自 kernel32.GetModuleHandleA
------------------------------------------------------------------------
第2次按SHIFT+F9运行后堆栈出现:
0013ED74 /0013EDAC
0013ED78 5D175324 返回到 5D175324 来自 kernel32.GetModuleHandleA
0013ED7C 5D175370 ASCII "kernel32.dll"
-------------------------------------------------------------------------
第3次按SHIFT+F9运行后堆栈出现:
0013EE38 77F45BD8 返回到 SHLWAPI.77F45BD8 来自 kernel32.GetModuleHandleA
0013EE3C 77F4501C ASCII "KERNEL32.DLL"
0013EE40 00000001
0013EE44 77F40000 SHLWAPI.77F40000
-------------------------------------------------------------------------
第4次按SHIFT+F9运行后堆栈出现:
0013F690 00498D4B 返回到 ASFConve.00498D4B 来自 kernel32.GetModuleHandleA
------------------------------------------------------------------------
第5次按SHIFT+F9运行后堆栈出现:
001392A8 00B86AA1 返回到 00B86AA1 来自 kernel32.GetModuleHandleA
001392AC 00B9BD6C ASCII "kernel32.dll"
001392B0 00B9DDAC ASCII "VirtualAlloc"
001392B4 00BA0A58
001392B8 7C9210ED ntdll.RtlLeaveCriticalSection
-------------------------------------------------------------------------
第6次按SHIFT+F9运行后堆栈出现:
001392A8 00B86ABE 返回到 00B86ABE 来自 kernel32.GetModuleHandleA
001392AC 00B9BD6C ASCII "kernel32.dll"
001392B0 00B9DDA0 ASCII "VirtualFree"
001392B4 00BA0A58
001392B8 7C9210ED ntdll.RtlLeaveCriticalSection
------------------------------------------------------------------------
第7次按SHIFT+F9运行后堆栈出现:
0013900C 00B75A14 返回到 00B75A14 来自 kernel32.GetModuleHandleA
00139010 0013915C ASCII "kernel32.dll"

------------------------------------------------------------------------
按完第7次SHIFT+F9后如无意外应该看到返回到 00B75A14 来自 kernel32.GetModuleHandleA这里,来到这里取消断点,再按Alt+F9执行到用户代码后,来到如下地方:

00B75A14 8B0D 6C50BA00 mov ecx,dword ptr ds:[BA506C] 返回到这里
00B75A1A 89040E mov dword ptr ds:[esi+ecx],eax
00B75A1D A1 6C50BA00 mov eax,dword ptr ds:[BA506C]
00B75A22 391C06 cmp dword ptr ds:[esi+eax],ebx
00B75A25 75 16 jnz short 00B75A3D
00B75A27 8D85 B4FEFFFF lea eax,dword ptr ss:[ebp-14C]
00B75A2D 50 push eax
00B75A2E FF15 B862B900 call dword ptr ds:[B962B8] ; kernel32.LoadLibraryA
00B75A34 8B0D 6C50BA00 mov ecx,dword ptr ds:[BA506C]
00B75A3A 89040E mov dword ptr ds:[esi+ecx],eax
00B75A3D A1 6C50BA00 mov eax,dword ptr ds:[BA506C]
00B75A42 391C06 cmp dword ptr ds:[esi+eax],ebx
00B75A45 0F84 2F010000 je 00B75B7A 这个跳就是Magic Jump改为JMP
00B75A4B 33C9 xor ecx,ecx
00B75A4D 8B07 mov eax,dword ptr ds:[edi]
00B75A4F 3918 cmp dword ptr ds:[eax],ebx
00B75A51 74 06 je short 00B75A59
00B75A53 41 inc ecx
00B75A54 83C0 0C add eax,0C
00B75A57 ^ EB F6 jmp short 00B75A4F
00B75A59 8BD9 mov ebx,ecx
00B75A5B C1E3 02 shl ebx,2
00B75A5E 53 push ebx

-------------------------------------------------------------------------
再拉到如下地址:
00B75B89 ^\0F85 49FEFFFF jnz 00B759D8
00B75B8F EB 03 jmp short 00B75B94 在这里下断SHIFT+F9运行,取消断点,撤消Magic Jump处的修改
00B75B91 D6 salc
00B75B92 D6 salc
00B75B93 8F ??? ; 未知命令
00B75B94 8B0D 249FBA00 mov ecx,dword ptr ds:[BA9F24]
00B75B9A 3BCB cmp ecx,ebx
------------------------------------------------------------------------

下BP GetCurrentThreadId断点 SHIFT+F9运行到这里:
7C809728 > 64:A1 18000000 mov eax,dword ptr fs:[18]
7C80972E 8B40 24 mov eax,dword ptr ds:[eax+24]
7C809731 C3 retn
7C809732 90 nop
7C809733 90 nop
7C809734 90 nop
7C809735 90 nop

------------------------------------------------------------------------
取消断点,按Alt+F9执行到用户代码后,来到如下地方:
00B75E1F 50 push eax
00B75E20 FF75 FC push dword ptr ss:[ebp-4]
00B75E23 E8 05000000 call 00B75E2D
00B75E28 83C4 0C add esp,0C
00B75E2B C9 leave
00B75E2C C3 retn
00B75E2D E8 82FFFFFF call 00B75DB4
00B75E32 6A 14 push 14
00B75E34 E8 C3F90100 call 00B957FC ; jmp 到
00B75E39 85C0 test eax,eax
00B75E3B 59 pop ecx
00B75E3C 74 13 je short 00B75E51
-------------------------------------------------------------------------
按F8向下走,来到如下地址:
00B90311 83FA 01 cmp edx,1
00B90314 75 1B jnz short 00B90331
00B90316 FF76 04 push dword ptr ds:[esi+4]
00B90319 8B50 54 mov edx,dword ptr ds:[eax+54]
00B9031C 3350 4C xor edx,dword ptr ds:[eax+4C]
00B9031F FF76 08 push dword ptr ds:[esi+8]
00B90322 3350 2C xor edx,dword ptr ds:[eax+2C]
00B90325 6A 00 push 0
00B90327 FF76 0C push dword ptr ds:[esi+C]
00B9032A 2BCA sub ecx,edx
00B9032C FFD1 call ecx F7步入到达OEP
00B9032E 8945 FC mov dword ptr ss:[ebp-4],eax
00B90331 8B45 FC mov eax,dword ptr ss:[ebp-4]
00B90334 5F pop edi
00B90335 5E pop esi
00B90336 C9 leave
-------------------------------------------------------------------------
接下来用LordPE脱壳,ImportREC修复,选项——新建输入表——据序列构造输入表——重建原始FT——创建新的IAT等都不要选上

没有评论:

发表评论