破BrainsBreaker3.0[07b]! (9千字)
破BrainsBreaker3.0[07b]!http://www.brainsbreaker.com/download.htm
非常感谢1212提供的Cruehead的优秀教程。
如有疑问,请参看此教程!
http://www.instinct.org/fravia/99solu/cruecom.htm
===========================================================
1、Key运算检测,最后保证[eax]为0,可BPM跟踪。
0167:00426D93 8BC1 MOV EAX,ECX
0167:00426D95 99 CDQ
0167:00426D96 F7FF IDIV EDI
0167:00426D98 8D041A LEA EAX,[EDX+EBX]
0167:00426D9B 8A1431 MOV DL,[ECX+ESI]
0167:00426D9E 3010 XOR [EAX],DL ******
0167:00426DA0 41 INC ECX
0167:00426DA1 3B4DF8 CMP ECX,[EBP-08]
0167:00426DA4 7CED JL 00426D93---->循环9次
改为:
0167:00426D93 8BC1 MOV EAX,ECX
0167:00426D95 99 CDQ
0167:00426D96 F7FF IDIV EDI
0167:00426D98 8D041A LEA EAX,[EDX+EBX]
0167:00426D9B 8A10 MOV DL,[EAX] ******
0167:00426D9D 90 NOP
0167:00426D9E 3010 XOR [EAX],DL ******we shall have a final value of zero
0167:00426DA0 41 INC ECX
0167:00426DA1 3B4DF8 CMP ECX,[EBP-08]
0167:00426DA4 7CED JL 00426D93
===========================================================
2、Pack、Name、Your ID运算检测,对比处可BPM跟踪。
0167:00427587 33C9 XOR ECX,ECX
0167:00427589 8BC1 MOV EAX,ECX
0167:0042758B 668B7D0C MOV DI,[EBP+0C]
0167:0042758F 99 CDQ
0167:00427590 F77DFC IDIV DWORD [EBP-04]
0167:00427593 8B45F8 MOV EAX,[EBP-08]
0167:00427596 03D0 ADD EDX,EAX
0167:00427598 663B7DE4 CMP DI,[EBP-1C]
0167:0042759C 8A02 MOV AL,[EDX]
0167:0042759E 7306 JNC 004275A6
0167:004275A0 8B7DE8 MOV EDI,[EBP-18]
0167:004275A3 32040F XOR AL,[EDI+ECX]
0167:004275A6 668B7D0C MOV DI,[EBP+0C]
0167:004275AA 663B7E0C CMP DI,[ESI+0C]
0167:004275AE 7306 JNC 004275B6
0167:004275B0 8B7E10 MOV EDI,[ESI+10]
0167:004275B3 32040F XOR AL,[EDI+ECX]
0167:004275B6 668B7D0C MOV DI,[EBP+0C]
0167:004275BA 663B7E14 CMP DI,[ESI+14]
0167:004275BE 7306 JNC 004275C6
0167:004275C0 8B7E18 MOV EDI,[ESI+18]
0167:004275C3 32040F XOR AL,[EDI+ECX]
0167:004275C6 FF450C INC DWORD [EBP+0C]
0167:004275C9 8802 MOV [EDX],AL
0167:004275CB 0FB74D0C MOVZX ECX,WORD [EBP+0C]
0167:004275CF 83F920 CMP ECX,BYTE +20
0167:004275D2 7CB5 JL 00427589---->循环20h次
0167:004275D4 FF75F4 PUSH DWORD [EBP-0C]
改为:(乱改程序会崩溃!)
0167:00427587 33C9 XOR ECX,ECX
0167:00427589 C745FC00000000 MOV DWORD [EBP-04],00 ******because zero bytes will be compared
0167:00427590 E93F000000 JMP 004275D4 ******
0167:00427595 F8 CLC
0167:00427596 03D0 ADD EDX,EAX
0167:00427598 663B7DE4 CMP DI,[EBP-1C]
0167:0042759C 8A02 MOV AL,[EDX]
0167:0042759E 7306 JNC 004275A6
0167:004275A0 8B7DE8 MOV EDI,[EBP-18]
0167:004275A3 32040F XOR AL,[EDI+ECX]
0167:004275A6 668B7D0C MOV DI,[EBP+0C]
0167:004275AA 663B7E0C CMP DI,[ESI+0C]
0167:004275AE 7306 JNC 004275B6
0167:004275B0 8B7E10 MOV EDI,[ESI+10]
0167:004275B3 32040F XOR AL,[EDI+ECX]
0167:004275B6 668B7D0C MOV DI,[EBP+0C]
0167:004275BA 663B7E14 CMP DI,[ESI+14]
0167:004275BE 7306 JNC 004275C6
0167:004275C0 8B7E18 MOV EDI,[ESI+18]
0167:004275C3 32040F XOR AL,[EDI+ECX]
0167:004275C6 FF450C INC DWORD [EBP+0C]
0167:004275C9 8802 MOV [EDX],AL
0167:004275CB 0FB74D0C MOVZX ECX,WORD [EBP+0C]
0167:004275CF 83F920 CMP ECX,BYTE +20
0167:004275D2 7CB5 JL 00427589
0167:004275D4 FF75F4 PUSH DWORD [EBP-0C]
===========================================================
3、程序注册检验对比处及是否被修改检验处如下:
* Referenced by a CALL at Addresses:
|:00405FC3 , :00420734 , :004213E0 , :004225A3 , :00426DAE
|:0042763A , :00427788 , :00459AF8 , :0046EBF0 , :00470C39
|:004800B5 , :00491CC4
|
:00495EC0 8B44240C mov eax, dword ptr [esp+0C]
:00495EC4 85C0 test eax, eax
:00495EC6 7444 je 00495F0C
:00495EC8 8B542404 mov edx, dword ptr [esp+04]
:00495ECC 56 push esi
:00495ECD 57 push edi
:00495ECE 8BF2 mov esi, edx
:00495ED0 8B7C2410 mov edi, dword ptr [esp+10]
:00495ED4 0BD7 or edx, edi
:00495ED6 83E203 and edx, 00000003
:00495ED9 7432 je 00495F0D
:00495EDB A901000000 test eax, 00000001
:00495EE0 740B je 00495EED
:00495EE2 8A0E mov cl, byte ptr [esi]
:00495EE4 3A0F cmp cl, byte ptr [edi]
:00495EE6 7552 jne 00495F3A
:00495EE8 46 inc esi
:00495EE9 47 inc edi
:00495EEA 48 dec eax
:00495EEB 741D je 00495F0A
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00495EE0(C), :00495F08(C)
|
:00495EED 8A0E mov cl, byte ptr [esi]
:00495EEF 8A17 mov dl, byte ptr [edi]
:00495EF1 38D1 cmp cl, dl
:00495EF3 7545 jne 00495F3A
:00495EF5 8A4E01 mov cl, byte ptr [esi+01]
:00495EF8 8A5701 mov dl, byte ptr [edi+01]
:00495EFB 38D1 cmp cl, dl
:00495EFD 753B jne 00495F3A
:00495EFF 83C702 add edi, 00000002
:00495F02 83C602 add esi, 00000002
:00495F05 83E802 sub eax, 00000002
:00495F08 75E3 jne 00495EED
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00495EEB(C), :00495F44(C)
|
:00495F0A 5F pop edi
:00495F0B 5E pop esi
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00495EC6(C)
|
:00495F0C C3 ret
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00495ED9(C)
|
:00495F0D 8BC8 mov ecx, eax
:00495F0F 83E003 and eax, 00000003
:00495F12 C1E902 shr ecx, 02
:00495F15 742B je 00495F42
:00495F17 F3 repz
:00495F18 A7 cmpsd
:00495F19 7427 je 00495F42
:00495F1B 8B4EFC mov ecx, dword ptr [esi-04]
:00495F1E 8B57FC mov edx, dword ptr [edi-04]
:00495F21 38D1 cmp cl, dl
:00495F23 7510 jne 00495F35
:00495F25 38F5 cmp ch, dh
:00495F27 750C jne 00495F35
:00495F29 C1E910 shr ecx, 10
:00495F2C C1EA10 shr edx, 10
:00495F2F 38D1 cmp cl, dl
:00495F31 7502 jne 00495F35
:00495F33 38F5 cmp ch, dh
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00495F23(C), :00495F27(C), :00495F31(C), :00495F4C(C), :00495F53(C)
|:00495F66(C)
|
:00495F35 B800000000 mov eax, 00000000
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00495EE6(C), :00495EF3(C), :00495EFD(C)
|
:00495F3A 1BC0 sbb eax, eax
:00495F3C 5F pop edi
:00495F3D 83D8FF sbb eax, FFFFFFFF
:00495F40 5E pop esi
:00495F41 C3 ret
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00495F15(C), :00495F19(C)
|
:00495F42 85C0 test eax, eax
:00495F44 74C4 je 00495F0A
:00495F46 8B16 mov edx, dword ptr [esi]
:00495F48 8B0F mov ecx, dword ptr [edi]
:00495F4A 38CA cmp dl, cl
:00495F4C 75E7 jne 00495F35
:00495F4E 48 dec eax
:00495F4F 7418 je 00495F69
:00495F51 38EE cmp dh, ch
:00495F53 75E0 jne 00495F35
:00495F55 48 dec eax
:00495F56 7411 je 00495F69
:00495F58 81E10000FF00 and ecx, 00FF0000
:00495F5E 81E20000FF00 and edx, 00FF0000
:00495F64 3BD1 cmp edx, ecx
:00495F66 75CD jne 00495F35
:00495F68 48 dec eax
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00495F4F(C), :00495F56(C)
|
:00495F69 5F pop edi
:00495F6A 5E pop esi
:00495F6B C3 ret
不能乱改,否则崩溃,程序其他部分还会调用此处,此乃程序高明之处。
===========================================================
4、程序被修改提示框的去除我用R!SC'sPatcher v1.4做PATCH,
非常简单,按1,2改。软件可在TOYE工具处下载。
我的bbrk32.rpp如下:
F=bbrk32.exe:
O=cr_bbrk32.exe:
P=426d9c/14,31/10,90:
P=427589/8b,c1,66,8b,7d,0c,99,f7,7d,fc,8b,45/c7,45,fc,00,00,00,00,e9,3f,00,00,00:
$
===========================================================
5、运行生成的cr_bbrk32.exe,
We have a fully functional REGISTERED copy of BrainsBreaker3.0[07b]!
===========================================================
/\zest/\2001.3.8
