• 标 题:老长时间来不了!!!先来点点心 (5千字)
  • 作 者:CrackerABC[BCG]
  • 时 间:2001-5-31 19:00:50
  • 链 接:http://bbs.pediy.com

关于蒋刚的推箱子1.9版本的破解

下载地址:http://www.3q1.com/zip/Cargador.zip

首先这个软件的作者在做这个程序的时候加上了对自身程序的CRC校验,所以在破解的时候我开始一直没找到破解点,在我老友gfh的提示下,我知道了破解点,下面是破解的代码(根据前几个版本的破解,只做修改如下,如果还有问题,请喜欢这个游戏的朋友告诉我还有什么限制,谢谢)

修改要点:

<1>去掉要注册和未注册的限制。
<2>去掉文件的自身CRC校验功能。

下面是用w32dsmv8.93反汇编得到的部分关键代码:

<1>去掉要注册和未注册的限制:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004020D6(C)
|
:00402141 8D45E4                  lea eax, dword ptr [ebp-1C]
:00402144 8D55E8                  lea edx, dword ptr [ebp-18]
:00402147 E8E4AB0600              call 0046CD30
:0040214C 8B55E4                  mov edx, dword ptr [ebp-1C]
:0040214F 8B45FC                  mov eax, dword ptr [ebp-04]
:00402152 8B80E8020000            mov eax, dword ptr [eax+000002E8]
:00402158 E853C20300              call 0043E3B0
:0040215D 803DF85E490001          cmp byte ptr [00495EF8], 01 //----->注册标志,1。
:00402164 7544                    jne 004021AA//------->修改为:90  nop
                                                                90  nop,跳过检验
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004020F1(C)
|
:00402166 33D2                    xor edx, edx
:00402168 8B45FC                  mov eax, dword ptr [ebp-04]
:0040216B 8B80D8020000            mov eax, dword ptr [eax+000002D8]
:00402171 E846C00300              call 0043E1BC
:00402176 B201                    mov dl, 01
:00402178 8B45FC                  mov eax, dword ptr [ebp-04]
:0040217B 8B8000030000            mov eax, dword ptr [eax+00000300]
:00402181 E836C00300              call 0043E1BC

* Possible StringData Ref from Code Obj ->"关于"
                                  |
:00402186 BA18224000              mov edx, 00402218
:0040218B A1F45E4900              mov eax, dword ptr [00495EF4]
:00402190 E81BC20300              call 0043E3B0
:00402195 8B45FC                  mov eax, dword ptr [ebp-04]
:00402198 8B9000030000            mov edx, dword ptr [eax+00000300]
:0040219E A1F45E4900              mov eax, dword ptr [00495EF4]
:004021A3 E830B00200              call 0042D1D8
:004021A8 EB42                    jmp 004021EC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402164(C) //----------------------------------------------------->破解点,往上看看。
|
:004021AA 33D2                    xor edx, edx
:004021AC 8B45FC                  mov eax, dword ptr [ebp-04]
:004021AF 8B8000030000            mov eax, dword ptr [eax+00000300]
:004021B5 E802C00300              call 0043E1BC
:004021BA B201                    mov dl, 01
:004021BC 8B45FC                  mov eax, dword ptr [ebp-04]
:004021BF 8B80D8020000            mov eax, dword ptr [eax+000002D8]
:004021C5 E8F2BF0300              call 0043E1BC

* Possible StringData Ref from Code Obj ->"注册"  //---->如果没注册就让你注册,注册了就没限制了!
                                  |
:004021CA BA28224000              mov edx, 00402228
:004021CF A1F45E4900              mov eax, dword ptr [00495EF4]
:004021D4 E8D7C10300              call 0043E3B0
:004021D9 8B45FC                  mov eax, dword ptr [ebp-04]
:004021DC 8B90F8020000            mov edx, dword ptr [eax+000002F8]
:004021E2 A1F45E4900              mov eax, dword ptr [00495EF4]
:004021E7 E8ECAF0200              call 0042D1D8

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

怎么程序不能运行?是不是程序有自身校验的功能,来看看吧。

<2>去掉文件的自身CRC校验功能。

如果只修改了上面就不能运行程序,所以要修改程序的CRC校验地点,查看反汇编的字符串,看到"最经典的游戏——推箱子",呵呵,看来有问题,因为在程序开始和结束的时候都没有这个提示和语句啊。看看吧。

|:00403B8B(U)
|
:00403BD4 8B55C4                  mov edx, dword ptr [ebp-3C]
:00403BD7 F6421220                test [edx+12], 20
:00403BDB 7509                    jne 00403BE6
:00403BDD 817DBC00000700          cmp dword ptr [ebp-44], 00070000
:00403BE4 7CA7                    jl 00403B8D

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403B77(C), :00403BDB(C)
|
:00403BE6 8A4DC2                  mov cl, byte ptr [ebp-3E]
:00403BE9 03C9                    add ecx, ecx
:00403BEB 3A4DC3                  cmp cl, byte ptr [ebp-3D]
:00403BEE 7411                    je 00403C01  //------------->修改它!7511 jne 00403C01
:00403BF0 A1145B4900              mov eax, dword ptr [00495B14]
:00403BF5 8B00                    mov eax, dword ptr [eax]
:00403BF7 E8ECF00200              call 00432CE8
:00403BFC E98A000000              jmp 00403C8B

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403BEE(C) //-------->看看去!
|
:00403C01 66C745DC3800            mov [ebp-24], 0038

* Possible StringData Ref from Data Obj ->"最经典的游戏——推箱子"//----->有点怪异!!!
                                  |
:00403C07 BABCE34700              mov edx, 0047E3BC
:00403C0C 8D45F0                  lea eax, dword ptr [ebp-10]
:00403C0F E8688C0700              call 0047C87C
:00403C14 FF45E8                  inc [ebp-18]
:00403C17 8B10                    mov edx, dword ptr [eax]
:00403C19 8B0D145B4900            mov ecx, dword ptr [00495B14]
:00403C1F 8B01                    mov eax, dword ptr [ecx]
:00403C21 E80EEA0200              call 00432634
:00403C26 FF4DE8                  dec [ebp-18]
:00403C29 8D45F0                  lea eax, dword ptr [ebp-10]
:00403C2C BA02000000              mov edx, 00000002
:00403C31 E8BA8C0700              call 0047C8F0
:00403C36 8B0D145B4900            mov ecx, dword ptr [00495B14]
:00403C3C 8B01                    mov eax, dword ptr [ecx]
* Reference To: Cargador._Main_Form
                                  |
:00403C3E 8B0D085B4900            mov ecx, dword ptr [00495B08]

通过上面两处的修改,程序就完成了破解,大家看看如何?