線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3121
推到 Plurk!
推到 Facebook!

[推薦] VCL 破解實例教程

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-25 11:23:29 IP:61.218.xxx.xxx 未訂閱
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 對話框。 破解完畢。 時間就是金錢---[ 發問前請先找找舊文章]
系統時間:2024-03-29 18:36:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!