- UID
- 34496
注册时间2007-8-16
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
【破文标题】破解Armadillo 4.00单进程带KEY
【破文作者】孤独刺客
【破解工具】OD
【破解平台】Win9x/NT/2000/XP
【软件名称】记事本
【软件大小】576KB
【保护方式】Armadillo
【破解声明】破解带KEY的必须要有一个正确的KEY才能破解。
--------------------------------------------------------------------------------------------------------------
小弟新手,写得不好,不要见笑。有不足之处还希望您提出。
加KEY记事本我打包给大家,提供我的正确KEY和硬盘号给大家练手
Hardware fingerprint: 8475-B764
用户名:刺客
KEY:00000G-HRPE1C-CXAFE7-EEPNUT-X4YH3Y-KD7M4G-TW61Q8-X38313-UE0XQK
------------------------------------------------------------------------
【破解过程】OD载入.....
00449243 >/$ 55 push ebp
00449244 |. 8BEC mov ebp, esp
00449246 |. 6A FF push -1
00449248 |. 68 402F4700 push 00472F40
0044924D |. 68 808F4400 push 00448F80 ; SE 处理程序安装
00449252 |. 64:A1 0000000>mov eax, dword ptr fs:[0]
00449258 |. 50 push eax
-------------------------------------------------------------------------------------------
F9运行,出现提示输入KEY对话框,不用管它,也不要关闭,然后下断:he GetDlgItem,再把刚才的对话框点‘OK’。
77D247FE > 8BFF mov edi, edi
77D24800 55 push ebp
77D24801 8BEC mov ebp, esp
77D24803 8B4D 08 mov ecx, dword ptr [ebp+8]
77D24806 E8 C53CFFFF call 77D184D0
77D2480B 85C0 test eax, eax
77D2480D 74 1F je short 77D2482E
77D2480F 56 push esi
77D24810 FF75 0C push dword ptr [ebp+C]
77D24813 50 push eax
77D24814 E8 A9FFFFFF call 77D247C2
--------------------------------------------------------------------------------------
Alt+f9返回。
00AD4618 50 push eax
00AD4619 68 15040000 push 415
00AD461E 57 push edi
00AD461F FFD6 call esi
00AD4621 50 push eax
00AD4622 68 07040000 push 407
00AD4627 57 push edi
00AD4628 FFD6 call esi
00AD462A 50 push eax
00AD462B E8 2370FFFF call 00ACB653
----------------------------------------------------------------------
到此需要把代码往上翻,找到上一个retn结束句的下一行,先把刚才的断点删除,调式-硬件断点-删除。
00AD4463 C3 retn
00AD4464 55 push ebp //在这行下硬件断点。(右键-断点-硬件执行)
00AD4465 8BEC mov ebp, esp
00AD4467 81EC 00040000 sub esp, 400
00AD446D 8B45 0C mov eax, dword ptr [ebp+C]
00AD4470 53 push ebx
00AD4471 56 push esi
00AD4472 2D 10010000 sub eax, 110
00AD4477 57 push edi
-------------------------------------------------------------------------------
重新载入,F9运行,这会出现对话框可以直接点OK了。
00AD4464 55 push ebp
00AD4465 8BEC mov ebp, esp
00AD4467 81EC 00040000 sub esp, 400
00AD446D 8B45 0C mov eax, dword ptr [ebp+C]
00AD4470 53 push ebx
00AD4471 56 push esi
00AD4472 2D 10010000 sub eax, 110
00AD4477 57 push edi
00AD4478 0F84 74010000 je 00AD45F2
---------------------------------------------------------------------------------------
删除断点,F8单步走到第一个大跳转,在这一行“跟随”,
00AD4478 /0F84 74010000 je 00AD45F2 //这就是第一个大跳转
00AD447E |48 dec eax
00AD447F |74 07 je short 00AD4488
00AD4481 |33C0 xor eax, eax
00AD4483 |E9 62040000 jmp 00AD48EA
00AD4488 |8B45 10 mov eax, dword ptr [ebp+10]
00AD448B |0FB7C8 movzx ecx, ax
00AD448E |C1E8 10 shr eax, 10
00AD4491 |66:85C0 test ax, ax
00AD4494 |0F85 4D040000 jnz 00AD48E7
00AD449A |83F9 01 cmp ecx, 1
00AD449D |0F85 17010000 jnz 00AD45BA
00AD44A3 |8A15 60ECAE00 mov dl, byte ptr [AEEC60]
-----------------------------------------------------------------------------------
跟随到了这里。,F2下断,F9运行,F2取消断点。
00AD45F2 F645 17 80 test byte ptr [ebp+17], 80
00AD45F6 8B7D 08 mov edi, dword ptr [ebp+8]
00AD45F9 74 12 je short 00AD460D
00AD45FB 8065 17 7F and byte ptr [ebp+17], 7F
00AD45FF 6A 01 push 1
00AD4601 68 5CC9AE00 push 0AEC95C
00AD4606 57 push edi
00AD4607 FF15 C064AE00 call dword ptr [AE64C0] ; USER32.SetPropA
00AD460D 8B35 E864AE00 mov esi, dword ptr [AE64E8] ; USER32.GetDlgItem
00AD4613 6A 01 push 1
----------------------------------------------------------------------------------------
继续单步走,找第二个大跳转。
00AD467D /0F84 B7000000 je 00AD473A //这就是第二个大跳转
00AD4683 |53 push ebx
00AD4684 |B9 98FAAE00 mov ecx, 0AEFA98
00AD4689 |E8 253CFEFF call 00AB82B3 //单步到这里,F7进入。
00AD468E |53 push ebx
00AD468F |B9 98FAAE00 mov ecx, 0AEFA98
00AD4694 |8945 08 mov dword ptr [ebp+8], eax
00AD4697 |E8 353CFEFF call 00AB82D1
00AD469C |837D 14 01 cmp dword ptr [ebp+14], 1
00AD46A0 |75 27 jnz short 00AD46C9
00AD46A2 |8B45 08 mov eax, dword ptr [ebp+8]
00AD46A5 |8BC8 mov ecx, eax
--------------------------------------------------------------------------------------
00AB82B3 56 push esi ; USER32.GetDlgItem
00AB82B4 8BF1 mov esi, ecx
00AB82B6 FF7424 08 push dword ptr [esp+8]
00AB82BA 8B8E 5C060000 mov ecx, dword ptr [esi+65C]
00AB82C0 6A 00 push 0
00AB82C2 E8 24D70000 call 00AC59EB //单步到这里,再F7进入
00AB82C7 3386 5C200000 xor eax, dword ptr [esi+205C]
00AB82CD 5E pop esi
00AB82CE C2 0400 retn 4
--------------------------------------------------------------------------------
00AC59EB 8B4424 04 mov eax, dword ptr [esp+4]
00AC59EF C1E0 06 shl eax, 6
00AC59F2 034424 08 add eax, dword ptr [esp+8]
00AC59F6 8B4481 18 mov eax, dword ptr [ecx+eax*4+18]
00AC59FA 35 8AC0E665 xor eax, 65E6C08A //改成 jmp 00401000,然后在此处“跟随”。
00AC59FF C2 0800 retn 8
------------------------------------------------------------------------------------
跟随后,到这里是空代码,下面就要要这些空代码写上。
00401000 0000 add byte ptr [eax], al
00401002 0000 add byte ptr [eax], al
00401004 0000 add byte ptr [eax], al
00401006 0000 add byte ptr [eax], al
00401008 0000 add byte ptr [eax], al
0040100A 0000 add byte ptr [eax], al
0040100C 0000 add byte ptr [eax], al
0040100E 0000 add byte ptr [eax], al
00401010 0000 add byte ptr [eax], al
00401012 0000 add byte ptr [eax], al
00401014 0000 add byte ptr [eax], al
00401016 0000 add byte ptr [eax], al
00401018 0000 add byte ptr [eax], al
-------------------------------------------------------------------------------
写成
xor eax, 65E6C08A
cmp eax, 8475B764 //判断 EAX 是否是我的机器码,8475B764 是我的机器码。根据自己的硬盘号,改成自 己的机器码
jnz 00401011 //不是就返回
mov eax, 5F48DD41 //如果是我的机器码就将 5F48DD41(别人的机器码,也是有正确的KEY的机器码)替换 成自己的。
retn 8
------------------------------------------------------------------------
打好补丁之后,在寄存器中,双击EIP 00AC59EB返回。
00AC59FA - E9 01B693FF jmp dumped_.00401000 //撤消选择出修改
00AC59FF C2 0800 retn 8
00AC5A02 E8 05000000 call 00AC5A0C
00AC5A07 E9 0C000000 jmp 00AC5A18
00AC5A0C 68 7830AF00 push 0AF3078
00AC5A11 FF15 7062AE00 call dword ptr [AE6270] ; kernel32.InitializeCriticalSection
00AC5A17 C3 retn
------------------------------------------------------------------------
F9运行,出现对话框,把已有正确的KEY填进去。点‘OK’,提示无效,因为我们还没有运行补丁。不用关闭它,我们继续。
00AC59FA 35 8AC0E665 xor eax, 65E6C08A //改成 jmp 00401000,“跟随”。
00AC59FF C2 0800 retn 8
00AC5A02 E8 05000000 call 00AC5A0C
00AC5A07 E9 0C000000 jmp 00AC5A18
00AC5A0C 68 7830AF00 push 0AF3078
00AC5A11 FF15 7062AE00 call dword ptr [AE6270] ; kernel32.InitializeCriticalSection
00AC5A17 C3 retn
-------------------------------------------------------------------
00401000 35 8AC0E665 xor eax, 65E6C08A //F2下断,再把刚才的对话框点“OK”。
00401005 3D 64B77584 cmp eax, 8475B764
0040100A 75 05 jnz short 00401011
0040100C B8 41DD485F mov eax, 5F48DD41
00401011 C2 0000 retn 0
再F2取消断点,F9运行。
这样就结束了,就可以运行文件试试看了,没有再要求输入KEY。成功了............结束。
------------------------------------------------------------------------
【破解总结】与不带KEY的穿山甲相比,主要在打补丁的地方有所不同。
------------------------------------------------------------------------
【版权声明】本文纯属技术交流,转载请注明作者信息并保持文章的完整,谢谢!
单进程.rar
(267.58 KB, 下载次数: 11)
[ 本帖最后由 孤独刺客 于 2008-5-2 16:37 编辑 ] |
|