飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 12755|回复: 21

[脱壳破解] 破解黑鹰(天草???)高级班的方法(转自看雪)

[复制链接]
  • TA的每日心情
    慵懒
    2024-9-26 17:36
  • 签到天数: 51 天

    [LV.5]常住居民I

    发表于 2007-12-24 11:09:01 | 显示全部楼层 |阅读模式
    破解黑鹰高级班的方法


    BP OpenMutexA


    00401000      60               pushad
    00401001      9C               pushfd
    00401002      68 A0FD1200      push 12FDA0                        ; ASCII "44C::DA47D45903"
    00401007      33C0             xor eax,eax
    00401009      50               push eax
    0040100A      50               push eax
    0040100B      E8 E694A677      call KERNEL32.CreateMutexA
    00401010      9D               popfd
    00401011      61               popad
    00401012    - E9 8F9FA777      jmp KERNEL32.OpenMutexA

    二进制为
    60 9C 68 D8 FD 12 00 33 C0 50 50 E8 2F D9 40 7C 9D 61 E9 04 DA 40 7C 90

    HE GetDlgItem

    054E59F6    8B4481 18       MOV EAX,DWORD PTR DS:[ECX+EAX*4+18]
    054E59FA    35 8AC0E665     XOR EAX,65E6C08A       改JMP 00401000


    在00401000改成
    xor eax 65E6C08A
    cmp eax, ******* 我们的硬件码
    jnz 00401000
    mov eax ,******* 别人的硬件码
    retn 8
    35 8A C0 E6 65 3D 54 8A C1 4C 75 F4 B8 41 DD 48 5F C2 08 00 00 00



    黑鹰KEY
    硬件号:9C64-79B3
    hewin
    000016-C04G2N-PYNWW5-TXE866-UEZRZY-AJGU8U-0JYJB0-EDWQ8D-N2JPWN-70WZT7



    具体过程:

    Hardware fingerprint: FF3A-560E
    用户名:shouzhi
    KEY:000014-9GBQ37-BEB02A-P194RD-RNB7NH-9DF592-AQBWYP-UCQVN9-KH1RXQ-GKY85K
    ------------------------------------------------------------------------
    【破解过程】OD载入.....,下断:bp OpenMutexA

    0044C243 >  55            push    ebp
    0044C244  |.  8BEC          mov     ebp, esp
    0044C246  |.  6A FF         push    -1
    0044C248  |.  68 405F4700   push    00475F40
    0044C24D  |.  68 80BF4400   push    0044BF80                         ;  SE 处理程序安装
    0044C252  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
    0044C258  |.  50            push    eax
    0044C259  |.  64:8925 00000>mov     dword ptr fs:[0], esp
    0044C260  |.  83EC 58       sub     esp, 58
    0044C263  |.  53            push    ebx
    0044C264  |.  56            push    esi
    0044C265  |.  57            push    edi
    ------------------------------------------------------------------------------------------
    F9运行。

    7C80EA3B >  8BFF            mov     edi, edi                         ; ntdll.7C930738
    7C80EA3D    55              push    ebp
    7C80EA3E    8BEC            mov     ebp, esp
    7C80EA40    51              push    ecx
    7C80EA41    51              push    ecx
    7C80EA42    837D 10 00      cmp     dword ptr [ebp+10], 0
    7C80EA46    56              push    esi
    7C80EA47    0F84 D7540300   je      7C843F24
    7C80EA4D    64:A1 18000000  mov     eax, dword ptr fs:[18]

    ----------------------------------------------------------------------------------------
    Ctrl+G,00401000,又是空代码


    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
    ---------------------------------------------------------------------------------
    分别填入以下代码:

    00401000    60              pushad
    00401001    9C              pushfd
    00401002    68 D8FD1300     push    13FDD8         ; ASCII "370:AA0A7A23E"  //这里一定要出现ASCII码,否则就不对,根据自己的改,看堆栈那里的值,就行了。
    00401007    33C0            xor     eax, eax
    00401009    50              push    eax
    0040100A    50              push    eax
    0040100B    E8 4FD9407C     call    kernel32.CreateMutexA
    00401010    9D              popfd
    00401011    61              popad
    00401012  - E9 24DA407C     jmp     kernel32.OpenMutexA

    --------------------------------------------------------------------------------------------
    选择第一行,右键-新键EIP,F9运行。

    7C80EA3B >  8BFF            mov     edi, edi                         ; ntdll.7C930738
    7C80EA3D    55              push    ebp
    7C80EA3E    8BEC            mov     ebp, esp
    7C80EA40    51              push    ecx
    7C80EA41    51              push    ecx
    7C80EA42    837D 10 00      cmp     dword ptr [ebp+10], 0
    7C80EA46    56              push    esi
    7C80EA47    0F84 D7540300   je      7C843F24
    7C80EA4D    64:A1 18000000  mov     eax, dword ptr fs:[18]
    7C80EA53    FF75 10         push    dword ptr [ebp+10]

    -------------------------------------------------------------------------------------
    F2取消断点,Ctrl+G,00401000.把这10行代码全选上,“撤消选择处修改”。
    00401000    60              pushad
    00401001    9C              pushfd
    00401002    68 D8FD1300     push    13FDD8                           ; ASCII "370:AA0A7A23E"
    00401007    33C0            xor     eax, eax
    00401009    50              push    eax
    0040100A    50              push    eax
    0040100B    E8 4FD9407C     call    kernel32.CreateMutexA
    00401010    9D              popfd
    00401011    61              popad
    00401012  - E9 24DA407C     jmp     kernel32.OpenMutexA

    ----------------------------------------------------------------------------------------
    //以上就是把双进程改为单进程,你会以为什么的方法跟单进程一样,是一样,不过有一点点的小改变。//

    F9运行,出现对话框不是不用管他,也不要关闭,现在我们下断: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
    77D24819    85C0            test    eax, eax
    77D2481B    0F84 60D80000   je      77D32081
    77D24821    8B30            mov     esi, dword ptr [eax]
    -----------------------------------------------------------------------------------------
    删除刚才的断点,Alt+F9,

    00BF4618    50              push    eax
    00BF4619    68 15040000     push    415
    00BF461E    57              push    edi
    00BF461F    FFD6            call    esi
    00BF4621    50              push    eax
    00BF4622    68 07040000     push    407
    00BF4627    57              push    edi
    00BF4628    FFD6            call    esi
    00BF462A    50              push    eax
    00BF462B    E8 2370FFFF     call    00BEB653
    00BF4630    8B0D E01EC100   mov     ecx, dword ptr [C11EE0]
    00BF4636    83C4 0C         add     esp, 0C
    00BF4639    E8 9F3EFEFF     call    00BD84DD
    ------------------------------------------------------------------------------------
    到了这里,我们不能再去找上一个RETN结束句了后那么做了,因为这样会又变成双进程了,

    00BF4618    50              push    eax
    00BF4619    68 15040000     push    415
    00BF461E    57              push    edi
    00BF461F    FFD6            call    esi
    00BF4621    50              push    eax
    00BF4622    68 07040000     push    407
    00BF4627    57              push    edi
    00BF4628    FFD6            call    esi
    00BF462A    50              push    eax
    00BF462B    E8 2370FFFF     call    00BEB653
    00BF4630    8B0D E01EC100   mov     ecx, dword ptr [C11EE0]
    00BF4636    83C4 0C         add     esp, 0C
    00BF4639    E8 9F3EFEFF     call    00BD84DD

    ------------------------------------------------------------------------------------
    看过我写的单进程的破文可以知道,第二次大跳转在,00BF4689,我们直接往下翻,找到后,F2下断,F9运行,F2取消断点,F7进入。

    00BF4689    E8 253CFEFF     call    00BD82B3
    00BF468E    53              push    ebx
    00BF468F    B9 98FAC000     mov     ecx, 0C0FA98
    00BF4694    8945 08         mov     dword ptr [ebp+8], eax
    00BF4697    E8 353CFEFF     call    00BD82D1
    00BF469C    837D 14 01      cmp     dword ptr [ebp+14], 1
    00BF46A0    75 27           jnz     short 00BF46C9
    00BF46A2    8B45 08         mov     eax, dword ptr [ebp+8]
    00BF46A5    8BC8            mov     ecx, eax
    00BF46A7    81E1 FFFF0000   and     ecx, 0FFFF
    00BF46AD    C1E8 10         shr     eax, 10
    --------------------------------------------------------------------------------------
    00BD82B3    56  
    稻草人(23380605)  9:21:41
    0BF4689    E8 253CFEFF     call    00BD82B3
    00BF468E    53              push    ebx
    00BF468F    B9 98FAC000     mov     ecx, 0C0FA98
    00BF4694    8945 08         mov     dword ptr [ebp+8], eax
    00BF4697    E8 353CFEFF     call    00BD82D1
    00BF469C    837D 14 01      cmp     dword ptr [ebp+14], 1
    00BF46A0    75 27           jnz     short 00BF46C9
    00BF46A2    8B45 08         mov     eax, dword ptr [ebp+8]
    00BF46A5    8BC8            mov     ecx, eax
    00BF46A7    81E1 FFFF0000   and     ecx, 0FFFF
    00BF46AD    C1E8 10         shr     eax, 10
    --------------------------------------------------------------------------------------
    00BD82B3    56              push    esi                              ; USER32.GetDlgItem
    00BD82B4    8BF1            mov     esi, ecx
    00BD82B6    FF7424 08       push    dword ptr [esp+8]
    00BD82BA    8B8E 5C060000   mov     ecx, dword ptr [esi+65C]
    00BD82C0    6A 00           push    0
    00BD82C2    E8 24D70000     call    00BE59EB                   //单步到这里,F7进入。
    00BD82C7    3386 5C200000   xor     eax, dword ptr [esi+205C]
    00BD82CD    5E              pop     esi
    00BD82CE    C2 0400         retn    4

    ------------------------------------------------------------------------------------------
    到这里了,就跟我上一篇单进程的方法一样了。

    00BE59EB    8B4424 04       mov     eax, dword ptr [esp+4]
    00BE59EF    C1E0 06         shl     eax, 6
    00BE59F2    034424 08       add     eax, dword ptr [esp+8]
    00BE59F6    8B4481 18       mov     eax, dword ptr [ecx+eax*4+18]
    00BE59FA    35 8AC0E665     xor     eax, 65E6C08A                    //改成 JMP 00401000,“跟随”。
    00BE59FF    C2 0800         retn    8
    00BE5A02    E8 05000000     call    00BE5A0C

    -----------------------------------------------------------------------------
    还是空代码,这里就是打补丁了。

    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
    0040101A    0000            add     byte ptr [eax], al
    0040101C    0000            add     byte ptr [eax], al

    ---------------------------------------------------------------------------------------------
    写成
    xor     eax, 65E6C08A
    cmp     eax, 331AD583  //判断 EAX 是否是我的机器码, 331AD583 是我的机器码。根据自己的硬盘号,改成自己的机器码
    jnz     00401011       //不是就返回
    mov     eax, 5B09DF2D  //如果是我的机器码就将  5B09DF2D(别人的机器码,也是有正确的KEY的机器码)替换成自己的。
    retn    8
    稻草人(23380605)  9:21:51

    ------------------------------------------------------------------------
    打好补丁之后,在寄存器中,双击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。成功了............结束。


    原贴地址:http://bbs.pediy.com/showthread.php?t=56866


    我没试,太菜了,希望高手验证下。/:017

    [ 本帖最后由 zongmin 于 2007-12-24 11:14 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-12-19 05:15
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2007-12-24 11:20:34 | 显示全部楼层
    根本就不行,这只是常规方法
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2025-1-10 09:01
  • 签到天数: 1949 天

    [LV.Master]伴坛终老

    发表于 2007-12-24 12:08:05 | 显示全部楼层
    /:012 这个不知能不能用,据说天草的是加了2个壳的哦。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-24 12:46:28 | 显示全部楼层
    呵呵,一方面是破解教材,一方面是破解。

    好好学习。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-24 13:09:24 | 显示全部楼层
    这种方法不行,我都用了N~~~~~~~~遍了!唉我/:002
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-24 13:13:34 | 显示全部楼层
    应该是天草的高级班
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-24 13:21:13 | 显示全部楼层
    这看起来就像是二进制录制发黑鹰破解提高班的东西耶!
    证据就是这个Hardware fingerprint: FF3A-560E
    黑鹰Hardware fingerprint则是有许多码呀~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-12-9 12:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-12-24 15:33:30 | 显示全部楼层
    好像是不可以的
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-24 15:50:43 | 显示全部楼层
    我也试过了,不行?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-24 17:32:36 | 显示全部楼层
    你们多这么试的,他上面写的是黑鹰,下面的是天草,没一个看的认真的
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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