[推薦] VCL 破解實例教程 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
VCL 破解實例教程
資料來源:http://go5.163.com/yarrows/tips/vclcrack.htm 本文的主旨是討論 VCL 的保護措施,而不在於侵犯他人版權。 VCL 破解實例教程 (一) 鐵馬 與破解一般可執行文件相比,破解 VCL 控件要簡單些。相應的,VCL 的破解工具
的選擇範圍也更廣汎。用 Softice 當然可以,但 Turbo Debug 32 也完全可以滿足要
求,有時甚至只要 Delphi 或 C Builder 的集成開發環境 (IDE) 也就夠了。以下
兩個例子中使用的工具為 Delphi 4 C/S 、 Turbo Debug 32 (可以在 Borland C
5.0 中找到)。 在進入正題之前,先介紹一點基礎知識: 匯編語言:
搞破解當然要會匯編語言。要求不高,知道 CALL 、JMP 、條件轉移是怎麼回事,
弄得清幾個寄存器即可。 Delphi 文件類型:
DPL 文件,動態運行庫﹔DCU 文件,靜態鏈接庫。破解 Delphi 和 C Builder
的 VCL 一般都要改這兩種文件。 C Builer 文件類型:
LIB 文件,庫文件﹔OBJ 文件,目標文件。破解 C Builder 需要改這兩種文件。 實例一 破解 AHM Triton 2000 AHM Triton 2000 是個試用版,用它做的程序 1999 年 6 月 6 日後運行時會顯示
一個關於 AHM 版權的對話框,並調用瀏覽器打開 AHM 的網站。
破解這個 VCL 控件集比較簡單,只要用 Delphi 或 C Builder 的 IDE 即可。
以 Delphi 4 為例,破解過程如下。 1. 正確安裝 AHM Triton 2000。 2. 在 Delphi 4 中新建一個應用程序 (New Application)。在 Form1 中放置一個 AHM
控件,比如 TAHMLabel 。保存這個工程,設主窗體單元名為 Main ,工程文件名 Test 。
編譯、鏈接這個工程。 3. 設置系統日期為 1999 年 6 月 6 日前任意一天,運行這個 Application ,正常。
設置系統日期為 1999 年 6 月 6 日後任意一天,運行這個 Application ,出現 AHM
版權信息對話框。 4. 設置系統日期為 1999 年 6 月 6 日後任意一天。在 Delphi 4 中按 F7 單步調試,
選 View/CPU 進入匯編跟蹤。 5. 按 F8 進行函數級調試,發現在 CALL @InitExe 中顯示 AHM 對話框中顯示 AHM
對話框。 6. 重復以上調試,跟蹤至 CALL @InitExe 初按 F7 進入子程序﹔再按 F8 至發現 AHM
對話框,這次是在 CALL @StartExe 處。 7. 重復調試,跟蹤至 CALL @StartExe 處按 F7 進入子程序﹔仍用 F8 跟蹤,這次找
到了 CALL @InitUnits 。 8. 重復調試,跟蹤入 CALL @InitUnits 。在這個子程序內用 F8 跟蹤,在循環多次
後在一 CALL EAX 處顯示 AHM 對話框中顯示 AHM 對話框。這次為了方便,記錄下此處
地址 XXXXXXH,在我這兒是 403632H ,但如果環境不一樣的話,這個數字可能是不同的。 9. 重新開始調試。這次可以在 CPU 窗口中的代碼框中按鼠標右鍵顯示彈出菜單,選
"Goto Address ..."(按 Ctrl-G 也可),在對話框中填入 $XXXXXX ,XXXXXX 即上面記
下的數字($表示十六進制數,這裡用 Pascal 語法)。這樣就定位到 CALL EAX 處了。在
此處設斷點。按 F9 運行,程序會在斷點初暫停。記錄程序暫停的次數,直至顯示 AHM
對話框。我這兒是 30 次(即第 31 次按 F9 時顯示 AHM 對話框),但如果環境不一
樣的話,可能是不同的。 10. 重復步驟 9 ,至程序第 30 次暫停在 CALL EAX 處。按 F7 進入子程序,記錄此處
地址,以便以後跟蹤,在我這兒是 445A90H。可以看見
子程序開頭的標識為 AHMEnhancedClass 。此處為 AHMEnhancedClass 的初始化代碼。 11. 觀察這一段程序,其實只有 6 條指令:
00445A90 832D34B8440001 sub dword ptr [$0044b834],$01
00445A97 7309 jnb AHMEnhancedClass $12
00445A99 38F2F3FFFF call -$0000010e
00445A9E 84C0 test al,al
00445AA0 74F7 jz AHMEnhancedClass $9
00445AA2 C3 ret 第三條指令調用一個子程序,第四條測試 AL ,第五條為條件轉移,看上去就象檢查版
權信息的。繼續函數級跟蹤,在 call -$0000010e 處當然會顯示 AHM 對話框。 12. 重新開始調試,跟蹤至 AHMEnhancedClass 第一條指令。做一個試驗,在第六條指
令,即 ret 處按鼠標顯示彈出菜單,選"NEW EIP"(按 Ctrl-N 也可),跳過前面五條指
令。繼續運行。AHM 對話框沒有了。 13. 嘗試修改 EXE 文件。在 TEST 項目所在目錄中找到 TEST.EXE ,用 Ultra Edit
打開這個文件。在文件中搜索 HEX 串 01730938 ,搜索到後繼續搜索,無第二處。確認
此處即為以上那段程序。將 73 改成 EB ,即將第二條指令改為
00445A97 EB09 jmp AHMEnhancedClass $12 存盤,運行,無 AHM 對話框。 * 特征串的提取
提取特征串需要一定技巧,不是特征串越長越好,尤其是對 Crack VCL 而言。在
VCL 庫中,大部份段內地址和 EXE 文件中的及實際運行時的地址不同,所以提取特征
串時應避開這些地址,只提取指令碼、立即數和相對地址。上例中,只提取了第一條指
令的最後一個字節(立即數)、第二條指令(指令碼和相對地址)和第三條指令的第一個字
節(指令碼)。通常四個字節可以比較精確的定位,但有時候也需要取較長的特征碼,特
別是在子程序的開始和結束處。 14. 在 AHM 庫文件所在目錄的各個文件中搜索 HEX 串 01730938 。在以下文件中各發
現一處目標串: AHMDialogClass.dcu
AHMDialogsD40.bpl
AHMEnhancedClass.dcu
AHMEnhancedD40.bpl
AHMMailClass.dcu
AHMEMailD40.bpl
AHMMenuClass.dcu
AHMMenusD40.bpl
AHMStdClass.dcu
AHMStandardD40.bpl
AHMSystemClass.dcu
AHMSystemD40.bpl 將這些文件中的 01730938 全替換成 01EB0938 。 15. 重新在 Delphi 4 中打開 TEST 項目,重新編譯、鏈接、運行,無 AHM 對話框。
破解完畢。
時間就是金錢---[ 發問前請先找找舊文章]
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |