Syntrillum CoolEditPro2.00 21天試用版時間限制破解 (16千字)

看雪資料發表於2002-06-01

Syntrillum CoolEditPro2.00 21天試用版時間限制破解

簡介:Syntrillum出品的CoolEdit可謂是音訊處理方面的精品,在國內有較多的使用者,曾先後推出了CoolEdit1.X和CoolEdit2000等版本。2002年4月我得到了其最新試用版本CoolEditPro2.00,該版本有21天的時間限制。為了能更長一點時間來使用它,我試著來解除其時間限制。

工具:Trw2000、W32dasm9.0、Keymaker1.74。

分析:
程式過期後,其主要限制有以下幾方面
(一)在啟動Logo畫面上顯示Trial version(expired);
(二)顯示Nag視窗,等待10個數字倒數計時,然後按Keep Evaluating按鈕繼續;
(三)標題欄上顯示Trial version(expired);
(四)關於(about cool edit pro)對話方塊標題欄顯示(expired),其中有This is a 21-DAY TRIAL version等資訊;
(五)不能儲存檔案。

(一)在啟動Logo畫面上顯示Trial version(expired)
用W32dasm反彙編coolpro2.exe檔案,在其中查詢(expired),能找到好幾處地址,在Trw200中都設為斷點,此功能限制主要程式碼在下面:
:004B29A5 FF15D8D16500            Call dword ptr [0065D1D8]
:004B29AB 8B442410                mov eax, dword ptr [esp+10]
:004B29AF 85C0                    test eax, eax
:004B29B1 0F8409010000            je 004B2AC0(這裡如跳轉,則可執行到004B2A5B,關鍵點一)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^         
…………
:004B2A56 03D1                    add edx, ecx
:004B2A58 83FA04                  cmp edx, 00000004
:004B2A5B 7525                    jne 004B2A82(此處跳到下面,顯示Licensed to:)
…………
:004B2A82 68A0E06700              push 0067E0A0
:004B2A87 8D4C243C                lea ecx, dword ptr [esp+3C]

* Possible StringData Ref from Data Obj ->"Licensed to: %s"
                                  |
:004B2A8B 68B04B6800              push 00684BB0
…………
:004B2B1D 8D442438                lea eax, dword ptr [esp+38]

* Possible StringData Ref from Data Obj ->"Trial Version (expired)"
                                  |
:004B2B21 68044C6800              push 00684C04
:004B2B26 50                      push eax
(二)顯示Nag視窗,等待10個數字倒數計時,然後按Keep Evaluating按鈕繼續
:0046E72F E8DCCEFFFF              call 0046B610
:0046E734 668B1578E16700          mov dx, word ptr [0067E178]
:0046E73B 663B1576E16700          cmp dx, word ptr [0067E176]
:0046E742 0F84D4000000            je 0046E81C(此處若跳轉,則可跳過Nag視窗,關鍵點二)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:0046E748 A1C4466A00              mov eax, dword ptr [006A46C4]
:0046E74D 85C0                    test eax, eax
:0046E74F 0F84C7000000            je 0046E81C
* Possible StringData Ref from Data Obj ->"Cool Waveform Editor - UNREGISTERED"
                                  |
:0046E755 6894C36700              push 0067C394
:0046E75A A1D8476A00              mov eax, dword ptr [006A47D8]
:0046E75F 50                      push eax

* Reference To: USER32.SetWindowTextA, Ord:025Eh
                                  |
:0046E760 FF15A4D46500            Call dword ptr [0065D4A4]

* Possible StringData Ref from Data Obj ->"Getting User Info..."
                                  |
:0046E766 68B8C36700              push 0067C3B8
:0046E76B 8B0D20506A00            mov ecx, dword ptr [006A5020]
:0046E771 E83A450400              call 004B2CB0
:0046E776 6A00                    push 00000000
:0046E778 68E08C5A00              push 005A8CE0
:0046E77D 8B0D84456A00            mov ecx, dword ptr [006A4584]
:0046E783 51                      push ecx

* Possible StringData Ref from Data Obj ->"ID_UNREGISTERED2"
                                  |
:0046E784 68D0C36700              push 0067C3D0
:0046E789 8B156C436A00            mov edx, dword ptr [006A436C]
:0046E78F 52                      push edx
:0046E790 E8DB6B1600              call 005D5370(這裡出現Nag視窗)
(三)標題欄上顯示Trial version(expired)
:00469EFB 8B35D4D16500            mov esi, dword ptr [0065D1D4]
:00469F01 55                      push ebp
:00469F02 FFD6                    call esi
:00469F04 85C0                    test eax, eax
:00469F06 0F8564010000            jne 0046A070
:00469F0C 66A178E16700            mov ax, word ptr [0067E178]
:00469F12 663B0576E16700          cmp ax, word ptr [0067E176]
:00469F19 7539                    jne 00469F54(此處若不跳,則標題欄顯示Licensed to,關鍵點三)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:00469F1B A0A0E06700              mov al, byte ptr [0067E0A0]
:00469F20 84C0                    test al, al(這裡用AL做標誌判斷登錄檔中是否有註冊使用者名稱,如有則AL的值為1,否則為零,所以這裡可改成cmp al,al,然後下面一行改成je 00469F2D,這樣永遠都會跳轉)
:00469F22 7509                    jne 00469F2D(此處若不跳,則啟動後open等命令為灰色,關鍵點四)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:00469F24 66C705F40D6B000000      mov word ptr [006B0DF4], 0000

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

* Possible StringData Ref from Data Obj ->"ssssssssssssssssssssssssssssssssssssssssssssss"
                                        ->"ssssssssssssssssssssssssssssssssssssssssssssss"
                                        ->"ss"
                                  |
:00469F2D 68A0E06700              push 0067E0A0
:00469F32 6890456A00              push 006A4590

* Possible StringData Ref from Data Obj ->"Cool Edit"
                                  |
:00469F37 687CAE6700              push 0067AE7C
:00469F3C 8D4C2428                lea ecx, dword ptr [esp+28]

* Possible StringData Ref from Data Obj ->"%s%s - Licensed to %s"
                                  |
:00469F40 6850B56700              push 0067B550
:00469F45 51                      push ecx

* Reference To: USER32.wsprintfA, Ord:02ACh
                                  |
:00469F46 FF15A4D56500            Call dword ptr [0065D5A4]
:00469F4C 83C414                  add esp, 00000014
:00469F4F E995000000              jmp 00469FE9
(四)關於(about cool edit pro)對話方塊標題欄顯示(expired),其中有This is a 21-DAY TRIAL version等資訊;
:004B3982 663B0576E16700          cmp ax, word ptr [0067E176]
:004B3989 56                      push esi
:004B398A 57                      push edi
:004B398B 894C2410                mov dword ptr [esp+10], ecx
:004B398F 88542414                mov byte ptr [esp+14], dl
:004B3993 C644241500              mov [esp+15], 00
:004B3998 0F8502020000            jne 004B3BA0(此處若跳則顯示This is a 21-DAY TRIAL version等信                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
息;關鍵點五)
^^^^^^^^^^^^
…………
* Possible StringData Ref from Data Obj ->"%s version %s%s"
                                  |
:004B3C35 68044D6800              push 00684D04
:004B3C3A 52                      push edx
:004B3C3B FFD5                    call ebp
:004B3C3D 66A178E16700            mov ax, word ptr [0067E178]
:004B3C43 83C414                  add esp, 00000014
:004B3C46 663B0576E16700          cmp ax, word ptr [0067E176]
:004B3C4D 746B                    je 004B3CBA(此處若不跳則標題欄顯示expired,關鍵點六)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:004B3C4F A1C42E6B00              mov eax, dword ptr [006B2EC4]
:004B3C54 83F801                  cmp eax, 00000001
:004B3C57 7520                    jne 004B3C79
(五)不能儲存檔案
檔案不能儲存的限制有好幾處,其中Save as、Save copy as、Save selection是同樣的地址,Save all是一處地址,而Save命令一直呈現灰色不可用狀態,所以未找到其限制地址,但無論怎樣儲存功能已經有了,用其他幾個代替吧,結果是一樣的!

1.Save as、Save copy as、Save selection的限制地址:
:0048E571 663BC7                  cmp ax, di
:0048E574 740D                    je 0048E583(這裡跳可以繞過一個提示不能儲存的Call,關鍵點七)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:0048E576 A1C42E6B00              mov eax, dword ptr [006B2EC4]
:0048E57B 85C0                    test eax, eax
:0048E57D 0F84FDDDFFFF            je 0048C380(選則裡也可以)

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048E574(C)
|
:0048E583 8B0D48456A00            mov ecx, dword ptr [006A4548]
:0048E589 85C9                    test ecx, ecx
:0048E58B 0F84AD3C0000            je 0049223E
:0048E591 E82A5B0500              call 004E40C0
:0048E596 8BF0                    mov esi, eax
:0048E598 85F6                    test esi, esi
:0048E59A 0F849E3C0000            je 0049223E
:0048E5A0 6681FB7702              cmp bx, 0277
:0048E5A5 741B                    je 0048E5C2
:0048E5A7 8A4634                  mov al, byte ptr [esi+34]
:0048E5AA 84C0                    test al, al
:0048E5AC 7414                    je 0048E5C2
:0048E5AE 837E1CFF                cmp dword ptr [esi+1C], FFFFFFFF
:0048E5B2 740E                    je 0048E5C2
:0048E5B4 39BEE0010000            cmp dword ptr [esi+000001E0], edi
:0048E5BA 7406                    je 0048E5C2
:0048E5BC 893D284D6B00            mov dword ptr [006B4D28], edi

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0048E5A5(C), :0048E5AC(C), :0048E5B2(C), :0048E5BA(C)
|
:0048E5C2 A10C4B6A00              mov eax, dword ptr [006A4B0C]
:0048E5C7 6681EB7702              sub bx, 0277
:0048E5CC 66F7DB                  neg bx
:0048E5CF 1BDB                    sbb ebx, ebx
:0048E5D1 6A00                    push 00000000
:0048E5D3 83E3FE                  and ebx, FFFFFFFE
:0048E5D6 6A00                    push 00000000
:0048E5D8 83C303                  add ebx, 00000003
:0048E5DB 50                      push eax
:0048E5DC 53                      push ebx
:0048E5DD 57                      push edi
:0048E5DE 56                      push esi
:0048E5DF E8CC05FFFF              call 0047EBB0(這裡出現不能儲存提示)
………
:0048C380 6800000400              push 00040000

* Possible Reference to String Resource ID=00566: "Demo Version"
                                  |
:0048C385 6836020000              push 00000236
:0048C38A E861EC1400              call 005DAFF0
:0048C38F 83C404                  add esp, 00000004
:0048C392 50                      push eax

* Possible Reference to String Resource ID=00565: "Sorry, the time limit for saving files has expired in this d"
                                  |
:0048C393 6835020000              push 00000235
:0048C398 E853EC1400              call 005DAFF0
:0048C39D 8B5508                  mov edx, dword ptr [ebp+08]
:0048C3A0 83C404                  add esp, 00000004
:0048C3A3 50                      push eax
:0048C3A4 52                      push edx
:0048C3A5 E8F68A1400              call 005D4EA0(這裡也出現不能儲存提示)
:0048C3AA 83C410                  add esp, 00000010
:0048C3AD 33C0                    xor eax, eax
:0048C3AF 5F                      pop edi
:0048C3B0 5E                      pop esi
:0048C3B1 5B                      pop ebx
:0048C3B2 8BE5                    mov esp, ebp
:0048C3B4 5D                      pop ebp
:0048C3B5 C3                      ret

在關鍵點五處改變跳轉,在經過:0048E5DF E8CC05FFFF              call 0047EBB0時仍然會有不能儲存的提示,F8進入這個Call看看:
:0047EBEF E8CC951200              call 005A81C0
:0047EBF4 83C408                  add esp, 00000008
:0047EBF7 663D0100                cmp ax, 0001
:0047EBFB 7447                    je 0047EC44(這裡跳可以下面提示不能儲存的Call,關鍵點八)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:0047EBFD 3935C42E6B00            cmp dword ptr [006B2EC4], esi
:0047EC03 753F                    jne 0047EC44
:0047EC05 6800000400              push 00040000

* Possible Reference to String Resource ID=00566: "Demo Version"
                                  |
:0047EC0A 6836020000              push 00000236
:0047EC0F E8DCC31500              call 005DAFF0
:0047EC14 83C404                  add esp, 00000004
:0047EC17 50                      push eax

* Possible Reference to String Resource ID=00565: "Sorry, the time limit for saving files has expired in this d"
                                  |
:0047EC18 6835020000              push 00000235
:0047EC1D E8CEC31500              call 005DAFF0
:0047EC22 8B0DC8466A00            mov ecx, dword ptr [006A46C8]
:0047EC28 83C404                  add esp, 00000004
:0047EC2B 50                      push eax
:0047EC2C 51                      push ecx
:0047EC2D E86E621500              call 005D4EA0(這裡出現不能儲存提示)

2.Save all的限制地址:
:00489D4C E86FE41100              call 005A81C0
:00489D51 83C408                  add esp, 00000008
:00489D54 663D0100                cmp ax, 0001
:00489D58 743F                    je 00489D99(這裡跳可以下面提示不能儲存的Call,關鍵點九)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:00489D5A A1C42E6B00              mov eax, dword ptr [006B2EC4]
:00489D5F 85C0                    test eax, eax
:00489D61 7536                    jne 00489D99
:00489D63 6800000400              push 00040000

* Possible Reference to String Resource ID=00566: "Demo Version"
                                  |
:00489D68 6836020000              push 00000236
:00489D6D E87E121500              call 005DAFF0
:00489D72 83C404                  add esp, 00000004
:00489D75 50                      push eax

* Possible Reference to String Resource ID=00565: "Sorry, the time limit for saving files has expired in this d"
                                  |
:00489D76 6835020000              push 00000235
:00489D7B E870121500              call 005DAFF0
:00489D80 83C404                  add esp, 00000004
:00489D83 50                      push eax
:00489D84 8B4508                  mov eax, dword ptr [ebp+08]
:00489D87 50                      push eax
:00489D88 E813B11400              call 005D4EA0(這裡出現不能儲存提示)
:00489D8D 83C410                  add esp, 00000010
:00489D90 33C0                    xor eax, eax
:00489D92 5F                      pop edi
:00489D93 5E                      pop esi
:00489D94 5B                      pop ebx
:00489D95 8BE5                    mov esp, ebp
:00489D97 5D                      pop ebp
:00489D98 C3                      ret
…………
關鍵點七改變跳轉後跳到:
:00489D99 8D8C2494070000          lea ecx, dword ptr [esp+00000794]
一直執行到下面的Call又出現不能儲存的提示:
:00489E35 FF5064                  call [eax+64]
F8進入這個Call,F10執行到下面就看出了門道:
:004EE07B E8300BF9FF              call 0047EBB0
這裡和:0048E5DF E8CC05FFFF              call 0047EBB0是同樣的呼叫,再進入這個Call,又有下面的呼叫
:0047EBFB 7447                    je 0047EC44(這裡跳可以下面提示不能儲存的Call,關鍵點八)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
coolpro2.exe檔案有自校驗功能,如果直接修改程式程式碼會導致不能執行,在這裡我沒有再破解該限制,而是用Keymaker直接製作它的記憶體補丁,能省就省吧!

執行Keymaker1.73,選擇“其他―製作記憶體補丁”。

程式名稱:coolpro2.exe
“訊息標題”和“啟動提示”填入自己喜歡的資訊。
依次將上面的幾處關鍵地址新增上。

修改地址:004B29B1
修改長度:6
原始指令:0F8409010000
修改指令:0F8509010000

修改地址:0046E742
修改長度:6
原始指令:0F84D4000000
修改指令:0F85D4000000

修改地址:00469F19
修改長度:2
原始指令:7539
修改指令:7439

修改地址:00469F20
修改長度:2
原始指令:84c0
修改指令:84DB

修改地址:00469F22
修改長度:2
原始指令:7509
修改指令:7409

修改地址:004B3998
修改長度:6
原始指令:0F8502020000
修改指令:0F8402020000

修改地址:004B3C4D
修改長度:2
原始指令:746B
修改指令:756B

修改地址:0048E574
修改長度:2
原始指令:740D
修改指令:750D

修改地址:0047EBFB
修改長度:2
原始指令:7447
修改指令:7547

修改地址:00489D58
修改長度:2
原始指令:743F
修改指令:753F

經過上面的修改後,所有顯示Licensed to的後面都是空,要想讓程式顯示你希望的使用者名稱,只要在登錄檔中HKEY_LOCAL_MACHINE\SOFTWARE\Syntrillium\CEPro2\Registration下建立Name字串並將其值設為你希望的內容即可。

最近接到虎翼網的通知,我的免費主頁只能使用到6月5日(免費的東西真是越來越少了),目前還沒找到更好的主頁空間,有想和我交流的朋友暫時可以發郵件到e-soft2001@sohu.com或用我的免費域名esoft.7i24.com(我會盡快找一個新的空?

相關文章