Tutor 10  How to crack AutoZip 98 v4.0

看雪資料發表於2015-11-15

標 題:Tutor 10  How to crack AutoZip 98 v4.0

發信人:dREAMtHEATER

時 間:15/16th, August 1999 

詳細資訊:


作者:dREAMtHEATER
E-mail:dreamtheater@263.net
寫作日期: 15/16th, August 1999

軟體背景資料

執行平臺: Win9X 
檔名稱: azp32v41.exe(版本號可能有誤)
程式型別: 解壓縮類工具
下載地點: http://www.mfsoft.com
檔案大小: 771KB

使用的工具

W32Dasm V8.93--Win9X Dissembler
Hex WorkShop V2.54--Hex Editor
RegSnap V2.51--Registry Analyzing Tool
Registry Studio V1.01--Enhanced Registry Editor

難易程度

Easy(x)  Medium( )  Hard( )  Pro( )

                  ----------=======宣告========----------

      未經作者同意,不得修改、引用原文,一切權利保留。
      本教程只供教學用,其他一切用途皆被禁止。
             
                  ----------=======軟體介紹========----------
   
      軟體的作者這樣說:
      AutoZip is a tool that lets you extract zip files directly from Netscape and
Internet Explorer. If the zip file contains a setup program, AutoZip can extract the
archive temporarily and run the setup file.

                ----------=======軟體的保護機制========-------

      這個shareware做的很體貼人,沒有nag,程式中也沒有任何地方可註冊,應該是線上(
on-line)註冊,只有你使用超過30天以後,才出現提示視窗告訴你必須註冊,否則休想再繼續使用
。沒關係,你可以用RegSnap在軟體安裝前後分別給登錄檔做個快照,然後進行比較。比較後,憑直
覺我認為程式第一次執行時間儲存在:HKEY_USERS\.DEFAULT\Software\MFSoft\AutoZip\Config40
,驗證的方法直接從登錄檔刪除這個鍵值,重新啟動程式。congratulate!你又獲得了三十天的試用
期。

                  ----------========正文========----------

Part1 如何用W32Dasm的Debugger功能快速破解本程式

線索
    首先將主執行程式在W32Dasm中反彙編,然後看看“String Data References”中有沒有跟“
共享”、時間限制等相關的詞彙,這可是你快速破解的最好方式!很可惜,沒有找到任何有參考價
值的詞彙,這會讓你不知所措嗎?想一想,還有什麼蛛絲馬跡可讓你來跟蹤的。請看下面:

"Color"
"Columns"
"comctl32.dll"
"commdlg_FindReplace"
"commdlg_help"
"Config40"      〈==看到了嗎?
"CONGRATULATIONS! "
"Content Type"
"ControlOfs%.8X%.8X"
"Convert EXE to ZIP"
"Convert ZIP to EXE"
"Copy"
"CoReleaseServerProcess"
"CoResumeClassObjects"
"CoSuspendClassObjects"
"Couldn"
"Create directory"

      "Config40"是從登錄檔中讀寫記錄時間的鍵值!在"W32Dasm List of String Data Items"窗
口中高亮顯示這一行,並用滑鼠雙擊這一行,你會發現程式碼視窗中有兩處與此相關的部分。

1)
* Possible StringData Ref from Code Obj ->"Software\MFSoft\AutoZip"
                                  |
:00492364 BA98234900              mov edx, 00492398
:00492369 8BC3                    mov eax, ebx
:0049236B E8344DFCFF              call 004570A4
:00492370 8BCE                    mov ecx, esi

* Possible StringData Ref from Code Obj ->"Config40"
                                  |
:00492372 BAB8234900              mov edx, 004923B8
:00492377 8BC3                    mov eax, ebx
:00492379 E8864FFCFF              call 00457304

2)
* Possible StringData Ref from Code Obj ->"Software\MFSoft\AutoZip"
                                  |
:004923F9 BA5C244900              mov edx, 0049245C
:004923FE 8B45FC                  mov eax, dword ptr [ebp-04]
:00492401 E89E4CFCFF              call 004570A4
:00492406 33C0                    xor eax, eax
:00492408 55                      push ebp
:00492409 682D244900              push 0049242D
:0049240E 64FF30                  push dword ptr fs:[eax]
:00492411 648920                  mov dword ptr fs:[eax], esp

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

* Possible StringData Ref from Code Obj ->"Config40"
                                  |
:00492414 BA7C244900              mov edx, 0049247C
:00492419 8B45FC                  mov eax, dword ptr [ebp-04]
:0049241C E8F74EFCFF              call 00457318

    這兩部分程式碼驗證了我前面說的,你可以看到在每個"Config40"前面數行都有
"Software\MFSoft\AutoZip",這分明在讀取登錄檔的"Config40"的鍵值。
    那麼,到底哪部分是我們所需要的呢?請在W32dasm的Debugger狀態下,分別在出現"Config40"
字串的下面一行的偏移地址設斷點,即:00492372、:00492414兩處,然後press F9,程式停在
:00492414y一行。
    上面過程說明程式是在我上面列出的第二部分的程式碼處讀取安裝時間的(請保證你不是第一次
執行該程式)。如果這時你的此程式還沒有過期,請退出W32Dasm的Debugger狀態,往後調整系統時
間,迫使程式過期,再重新進入W32Dasm的Debugger狀態,設斷點在:00492414;否則,你只須取消所
有的斷點,press F6,繼續跟蹤,你會發現程式很快呼叫出過期的提示視窗:
   
:00492591 83F81E                  cmp eax, 0000001E  <==與30天比較
:00492594 7E25                    jle 004925BB  <==小於30天跳轉
:00492596 B9085A4900              mov ecx, 00495A08
:0049259B A1304B4900              mov eax, dword ptr [00494B30]
:004925A0 8B00                    mov eax, dword ptr [eax]
:004925A2 8B15F4204900            mov edx, dword ptr [004920F4]
:004925A8 E8F7AAFBFF              call 0044D0A4
:004925AD A1304B4900              mov eax, dword ptr [00494B30]
:004925B2 8B00                    mov eax, dword ptr [eax]
:004925B4 E86BABFBFF              call 0044D124  <==呼叫過期的提示視窗
:004925B9 B301                    mov bl, 01

      多麼直接了當的一段程式碼,不用我說了,應該知道怎麼改吧!

                  ----------=======The Patch========----------

      在檔案AutoZip.exe的offset:00091994處,修改7E25為EB25

                  ---------========The Final========----------
     
      W32Dasm的一些具體操作我沒有很仔細地講,如若有不清楚的地方,請看它的Help檔案。
      Debugger狀態下,如想能在很短的時間內找出呼叫象Nag Screen這樣的視窗的CALL,如果你
沒有其他好的方法可以使用(比如下合適的API函式斷點),那就必須找到與此有關聯的部分,例如
從登錄檔讀取安裝時間、註冊資訊的程式碼部分,這些都是很好的線索,呼叫nag的CALL與這些程式碼應
該離得很近,此種方法在大多數情況下都很有效,再不濟的,如果你實在找不到任何資訊,那你就
從程式的入口點(Entry Point)一行一行地執行程式碼,直到執行到呼叫出nag的那個CALL,到這還沒
完,如果你在這裡修改程式,往往會使程式@#^&*!,這是因為這個CAll裡面還包含著很多的CAll,你
還須trace into 這個CALL,然後有可能且極有可能再trace into.....天啊!是不是把你已經累死了
!不要認為這種方法不可行,我曾經不止一次這樣trace過,而且成功地破解過數個shareware,不過
,還好,沒有把我完全累死,只是咳咳.... :-)
      從本章內容,你會了解到W32Dasm的Debug功能也蠻強的,不過他遠不如SoftIce的斷點設定
能力強,尤其在windows API函式斷點設定方面簡直就是白痴!其Debugger狀態下,最大的優點就是
非常容易觀察程式的變化。不要再迷信SoftIce了,他絕對不是你唯一的選擇!
      W32Dasm,kool!

相關文章