飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6122|回复: 7

[原创] 破解Armadillo 4.00单进程带KEY

[复制链接]

该用户从未签到

发表于 2007-9-1 17:04:16 | 显示全部楼层 |阅读模式
【破文标题】破解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 编辑 ]
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-9-1 21:27:41 | 显示全部楼层
    厉害/:L
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-2 08:41:03 | 显示全部楼层
    下载学习,谢谢。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-2 09:23:19 | 显示全部楼层
    虽然看不懂还是要顶
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-2 10:58:17 | 显示全部楼层
    学习一下,很好的帖子
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-2 15:38:45 | 显示全部楼层
    学习了,谢谢分享
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-9-2 22:03:27 | 显示全部楼层
    牛,支持一下LZ...学习
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-11-5 00:35:31 | 显示全部楼层
    学习了 最近为了这个壳  头疼
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表