zongmin 发表于 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:
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:
0044C258|.50            push    eax
0044C259|.64:8925 00000>mov   dword ptr fs:, 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 , 0
7C80EA46    56            push    esi
7C80EA47    0F84 D7540300   je      7C843F24
7C80EA4D    64:A1 18000000mov   eax, dword ptr fs:

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


00401000    0000            add   byte ptr , al
00401002    0000            add   byte ptr , al
00401004    0000            add   byte ptr , al
00401006    0000            add   byte ptr , al
00401008    0000            add   byte ptr , al
0040100A    0000            add   byte ptr , al
0040100C    0000            add   byte ptr , al
0040100E    0000            add   byte ptr , al
00401010    0000            add   byte ptr , al
00401012    0000            add   byte ptr , al
00401014    0000            add   byte ptr , al
00401016    0000            add   byte ptr , al
00401018    0000            add   byte ptr , 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 , 0
7C80EA46    56            push    esi
7C80EA47    0F84 D7540300   je      7C843F24
7C80EA4D    64:A1 18000000mov   eax, dword ptr fs:
7C80EA53    FF75 10         push    dword ptr

-------------------------------------------------------------------------------------
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
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
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
-----------------------------------------------------------------------------------------
删除刚才的断点,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
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
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 , eax
00BF4697    E8 353CFEFF   call    00BD82D1
00BF469C    837D 14 01      cmp   dword ptr , 1
00BF46A0    75 27         jnz   short 00BF46C9
00BF46A2    8B45 08         mov   eax, dword ptr
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 , eax
00BF4697    E8 353CFEFF   call    00BD82D1
00BF469C    837D 14 01      cmp   dword ptr , 1
00BF46A0    75 27         jnz   short 00BF46C9
00BF46A2    8B45 08         mov   eax, dword ptr
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
00BD82BA    8B8E 5C060000   mov   ecx, dword ptr
00BD82C0    6A 00         push    0
00BD82C2    E8 24D70000   call    00BE59EB                   //单步到这里,F7进入。
00BD82C7    3386 5C200000   xor   eax, dword ptr
00BD82CD    5E            pop   esi
00BD82CE    C2 0400         retn    4

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

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

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

00401000    0000            add   byte ptr , al
00401002    0000            add   byte ptr , al
00401004    0000            add   byte ptr , al
00401006    0000            add   byte ptr , al
00401008    0000            add   byte ptr , al
0040100A    0000            add   byte ptr , al
0040100C    0000            add   byte ptr , al
0040100E    0000            add   byte ptr , al
00401010    0000            add   byte ptr , al
00401012    0000            add   byte ptr , al
00401014    0000            add   byte ptr , al
00401016    0000            add   byte ptr , al
00401018    0000            add   byte ptr , al
0040101A    0000            add   byte ptr , al
0040101C    0000            add   byte ptr , 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                ; 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                ; 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 编辑 ]

pygwang 发表于 2007-12-24 11:20:34

根本就不行,这只是常规方法

kill 发表于 2007-12-24 12:08:05

/:012 这个不知能不能用,据说天草的是加了2个壳的哦。

jfxwc 发表于 2007-12-24 12:46:28

呵呵,一方面是破解教材,一方面是破解。

好好学习。

your918 发表于 2007-12-24 13:09:24

这种方法不行,我都用了N~~~~~~~~遍了!唉我/:002

your918 发表于 2007-12-24 13:13:34

应该是天草的高级班

piggy 发表于 2007-12-24 13:21:13

这看起来就像是二进制录制发黑鹰破解提高班的东西耶!
证据就是这个Hardware fingerprint: FF3A-560E
黑鹰Hardware fingerprint则是有许多码呀~

cxl0825 发表于 2007-12-24 15:33:30

好像是不可以的

sbshjw 发表于 2007-12-24 15:50:43

我也试过了,不行?

congxinks 发表于 2007-12-24 17:32:36

你们多这么试的,他上面写的是黑鹰,下面的是天草,没一个看的认真的
页: [1] 2 3
查看完整版本: 破解黑鹰(天草???)高级班的方法(转自看雪)