下载地址: http://www.siliconrealms.com/download/Armd340.exe 软件大小: 1.63M
【软件简介】:Armadillo is a powerful software protection system. It wraps around your program like an armored shell, defending your work from pirates and program crackers with state-of-the-art encryption, data compression, and other security features. It allows you to design and add a complete software protection and registration-key system to your existing programs in five minutes or less, with no changes to your program’s code! And it works with any language that produces a 32-bit Windows EXE file.
【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、Ollydbg1.09、PEiD、LordPE、ImportREC
————————————————————————————————— 【脱壳过程】:
从其主页下载了Armadillo V3.40,应该是目前的最新版吧? 试炼品:用Armadillo V3.40标准方式(Standard Protections Only)加壳的Win98的Notepad,想试试就自己加吧。
Armadillo是当今猛壳之一啦。其CopyMem-II+Debug-Blocker的加壳方式是非常强劲的,其标准加壳方式相对来说则容易的多。无聊时偶来捏捏软柿子, 看看V3.40的标准加壳有无变化。
用IsDebug 1.4插件去掉Ollydbg的调试器标志。设置忽略所有的异常选项。Let’s Go!
00425869 55 push ebp ====>进入OD后断在这!
F9运行,弹出“未授权”的Armadillo保护提示。偶们下断:BP GetModuleHandleA+5 点OK后断下。当然,对于用注册版加壳的没有这个提示,可以直接在GetModuleHandleA+5处下 硬件执行 断点。断下后看看堆栈:
77E59F93 837C24 04 00 cmp dword ptr ss:[esp+4],0 77E59F98 0F84 23060000 je kernel32.77E5A5C1 ====>断在这!按7次F9,然后取消断点,Ctrl+F9执行到返回
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ BP GetModuleHandleA+5 中断后的堆栈变化:
0012BE84 00AA6A5E 返回到 00AA6A5E 来自 kernel32.GetModuleHandleA 0012BE88 0012BFC0 ASCII "kernel32.dll"
0012BE84 00AA6A5E 返回到 00AA6A5E 来自 kernel32.GetModuleHandleA 0012BE88 0012BFC0 ASCII "user32.dll"
0012BE84 00AA6A5E 返回到 00AA6A5E 来自 kernel32.GetModuleHandleA 0012BE88 0012BFC0 ASCII "MSVBVM60.DLL"
0012B77C 66001BB1 返回到 66001BB1 来自 kernel32.GetModuleHandleA 0012B780 66003DA8 ASCII "kernel32.dll"
0012B770 66002848 返回到 66002848 来自 kernel32.GetModuleHandleA 0012B774 66003DD4 ASCII "KERNEL32"
0012B768 660031FB 返回到 660031FB 来自 kernel32.GetModuleHandleA 0012B76C 00000000
0012BE84 00AA6A5E 返回到 00AA6A5E 来自 kernel32.GetModuleHandleA 0012BE88 0012BFC0 ASCII "advapi32.dll"
0012C110 00ABE6C1 返回到 00ABE6C1 来自 kernel32.GetModuleHandleA 0012C114 00000000 //好了,到此为止吧 再来几次就运行了
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
77E59F9E FF7424 04 push dword ptr ss:[esp+4] 77E59FA2 E8 55080000 call kernel32.77E5A7FC 77E59FA7 85C0 test eax,eax 77E59FA9 74 08 je short kernel32.77E59FB3 77E59FAB FF70 04 push dword ptr ds:[eax+4] 77E59FAE E8 B0060000 call kernel32.GetModuleHandleW 77E59FB3 C2 0400 retn 4 ====>返回到 00ABE6C1
————————————————————————
00ABE6BB FF15 C4C0AC00 call dword ptr ds:[ACC0C4] ; kernel32.GetModuleHandleA 00ABE6C1 3985 B0E9FFFF cmp dword ptr ss:[ebp-1650], eax ; Notepad.00400000 00ABE6C7 75 0F jnz short 00ABE6D8 00ABE6C9 C785ACE9FFFF4002AD00 mov dword ptr ss:[ebp-1654], 0AD0240 00ABE6D3 E9 C4000000 jmp 00ABE79C 00ABE6D8 83A5 84E7FFFF 00 and dword ptr ss:[ebp-187C], 0 00ABE6DF C78580E7FFFF5008AD00 mov dword ptr ss:[ebp-1880], 0AD0850 00ABE6E9 EB 1C jmp short 00ABE707 00ABE6EB 8B85 80E7FFFF mov eax, dword ptr ss:[ebp-1880] 00ABE6F1 83C0 0C add eax, 0C 00ABE6F4 8985 80E7FFFF mov dword ptr ss:[ebp-1880], eax 00ABE6FA 8B85 84E7FFFF mov eax, dword ptr ss:[ebp-187C] 00ABE700 40 inc eax 00ABE701 8985 84E7FFFF mov dword ptr ss:[ebp-187C], eax 00ABE707 8B85 80E7FFFF mov eax, dword ptr ss:[ebp-1880] 00ABE70D 8338 00 cmp dword ptr ds:[eax], 0 00ABE710 0F84 86000000 je 00ABE79C //在这里偶中断了6次 ====>这就是那个Magic Jump 此处下 硬件执行 断点,每次断下后改标志Z=1,使其JMP,就能得到未被破坏的输入表了
接着下断:BP GetCurrentThreadId 断下后取消断点,Ctrl+F9执行到返回
77E57CC4 64:A1 18000000 mov eax, dword ptr fs:[18] 77E57CCA 8B40 24 mov eax, dword ptr ds:[eax+24] 77E57CCD C3 retn ====>返回到 00AC1351
00AC134B FF15 14C1AC00 call dword ptr ds:[ACC114] ; kernel32.GetCurrentThreadId 00AC1351 A3 F0B8AD00 mov dword ptr ds:[ADB8F0], eax ====>返回到这里 向下找CALL EDI,在00AC13E4处,F2下断 00AC1356 E8 E759FEFF call 00AA6D42 00AC135B 6A 00 push 0 00AC135D E8 FBB1FEFF call 00AAC55D 00AC1362 6A 00 push 0 00AC1364 C7054418AD008022AD00 mov dword ptr ds:[AD1844], 0AD2280 ; ASCII "RC" 00AC136E E8 A22D0000 call 00AC4115 00AC1373 59 pop ecx 00AC1374 59 pop ecx 00AC1375 E8 1B2BFFFF call 00AB3E95
1 2 下一页 |