史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-04-01, 08:55 PM   #1 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 Visual CHM 4.0的算法「特別破解」

Visual CHM 4.0的算法「特別破解」

【軟體名稱】:Visual CHM 4.0

【軟體簡介】:執行於多種 Windows 平台,包括 Windows 95/98/Me/NT 4.0/2000/XP。一款不錯的CHM製作和反編譯於一身的利器!
Features of Visual CHM:

Compile and decompile HTML help files

Add a batch of HTML files at one time

Integrate with windows explorer

WYSIWYG (What you see is what you get)

Easily edit HTML files
Support multiple language (Include English, Chinese, German, Spanish, and more)
【軟體大小】:1570 KB 主程式:407KB

【軟體主頁】:http://www.wekasoft.com/vchm

【作者】:NewHand[BCG]

【作者聲明】:只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!

【調試環境】:Win98、OllDBG、PEiD、Aspackdie1.4

—————————————————————————————————
【過程】: 請出PEiD,偵得是Aspack,那就先用Aspackdie1.4脫殼,雖然手脫很容易,但用此工具脫會廋身些!會知編寫語言是:Borland Delphi 6.0 - 7.0,軟體說有編輯15個標題的限制,就執行軟體試試,然後知道軟體在你匯入編輯標題時進行數量統計,如你沒註冊,則統計到數量為16時就彈出提示;若你註冊假碼則不會提示你。並且「編譯」的表單和按鈕會變灰,在Language的中文.ini裡發現:
[RegForm]
Caption=註冊
LabelReg.Caption=註冊成功!
Label1.Caption=機器碼:
Label2.Caption=用戶名:
Label3.Caption=註冊碼:
ButtonOK.Caption=確定
ButtonCancel.Caption=退出
ButtonBuyNow.Caption=購買
ButtonBuyNow.Hint=線上時點擊
Error=用戶名的長度必須在 6 到 32 個字元之間!
Over=請重新啟動本軟體,檢查註冊!

Dede的使用我還不行,好了就用OD調戲它!
既然「匯入編輯標題時進行數量統計,如你沒註冊,則統計到數量為16時就彈出提示」,即有會使用Messageboxa對話視窗函數:有了OD,又豈用在這函數下斷,用OD載入主程式或Attach它,匯入標題,使其彈出提示對話視窗,然後在OD裡暫停並在當前命令下斷點,回主程式點「確定」,會提示OD攔截成功,點return按鈕或「Ctrl+F9」,按一下F8,是否返回了主程式領空?爽嗎?那麼你會想到判斷的地方多數在附近吧,於是你就要向上翻找找Cmp register,(fh,10h)+Jmp類的命令了,懷疑的就斷來看看改改的^_^
改了(參:☆★☆:***爆破1)後就是為了避開檢測註冊訊息同時也使程序省省力氣--太過疲勞不好^_^;再來驗證是否成功了,結果是「編譯」按鈕和表單沒再變灰,但點「編譯」時標題的數量在某程度上會不工作,呵呵,看來是有暗樁的,有人說Delph程序很清晰條理,果然,我們搜尋一下「字元串參考」,看看有沒有「Compile」的傢伙,發現了嗎:
004E3577 . 68 2C394E00 PUSH VCHM.004E392C ; ASCII "Start Building ... "
004E357C . 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
004E357F . 50 PUSH EAX
004E3580 . A1 00164F00 MOV EAX,DWORD PTR DS:[4F1600]
004E3585 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004E3587 . B9 48394E00 MOV ECX,VCHM.004E3948 ; ASCII "BeginCompile"
004E358C . BA 60394E00 MOV EDX,VCHM.004E3960 ; ASCII "MainForm"
同樣也是向上找找一些關鍵的比較、跳轉作分析,然後跟蹤看看改改的^_^(參:☆★☆:***爆破2),你也完全可以在點按下「編譯」前,下斷一些你認為能夠中斷的函數……進行你自己的跟蹤^_^

輸入的「用戶名:」和「註冊碼:」只檢測用戶名長度,並會分別儲存到註冊表"SoftWare\XgSoft\Visual CHM 3.0\"的"Email"和"RegisterCode",在重啟動才計算註冊碼和用戶名》
004D46A9 |. E8 1628FAFF CALL VCHM.00476EC4
004D46AE |. B1 01 MOV CL,1
004D46B0 |. BA 28484D00 MOV EDX,VCHM.004D4828 ; ASCII "SoftWare\XgSoft\Visual CHM 3.0\"
……
004D46ED |. 83F8 21 CMP EAX,21
004D46F0 |. 7E 2B JLE SHORT VCHM.004D471D
004D46F2 |> 68 50484D00 PUSH VCHM.004D4850 ; ASCII "The length of the user name must range from 6 to 32"
……
004D4755 |. /74 26 JE SHORT VCHM.004D477D ;
004D4757 |> |68 B0484D00 PUSH VCHM.004D48B0 ; ASCII "Please restart the progamme and make sure of the successful registration !"

004D40BB |. BA F0434D00 MOV EDX,VCHM.004D43F0 ; ASCII "RegForm"
004D40C0 |. 8BC3 MOV EAX,EBX ; 註冊對話視窗標題
……
004D40E1 |. B1 01 MOV CL,1 ; 下面是對「註冊對話視窗」輸入內容進行讀取
004D40E3 |. BA 00444D00 MOV EDX,VCHM.004D4400 ; ASCII "SoftWare\XgSoft\Visual CHM 3.0\"
004D40E8 |. 8BC6 MOV EAX,ESI
004D40EA |. E8 392EFAFF CALL VCHM.00476F28
004D40EF |. 8D4D FC LEA ECX,DWORD PTR SS:[EBP-4]
004D40F2 |. BA 28444D00 MOV EDX,VCHM.004D4428 ; ASCII "Email"
……
004D4107 |. E8 80B8F7FF CALL VCHM.0044F98C
004D410C |. 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8]
004D410F |. BA 38444D00 MOV EDX,VCHM.004D4438 ; ASCII "RegisterCode"

004E3071 . 8338 00 CMP DWORD PTR DS:[EAX],0 ; 是否匯入了*.VCM
004E3074 . 75 10 JNZ SHORT VCHM.004E3086
004E3076 . 8B15 70144F00 MOV EDX,DWORD PTR DS:[4F1470] ; VCHM.004F2C3C
004E307C . 8B12 MOV EDX,DWORD PTR DS:[EDX]
004E307E . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004E3081 . E8 3EAEFFFF CALL VCHM.004DDEC4 ; 詢問儲存位置和類型
004E3086 > A1 04124F00 MOV EAX,DWORD PTR DS:[4F1204]
004E308B . 8338 00 CMP DWORD PTR DS:[EAX],0 ; 是否點按了「取消」
004E308E . 0F84 21080000 JE VCHM.004E38B5
--往後有一段段驗證算碼的,呵呵這裡就不貼了……

☆★☆:
多次跟蹤,發現重啟動只對註冊碼和用戶名進行計算,而不作比較,驗證會放在匯入標題數目過15、點擊「編譯」標題數目超過52項、和開啟註冊對話視窗。
那麼光解除功能限制,只需爆破兩處地方:
004E430A |. 83F8 10 CMP EAX,10 ; 限制編譯15個標題跳向驗證的地方
004E430D |. 7D 34 JGE SHORT VCHM.004E4343 ; ***爆破1:將這句命令改成nop***

004E3433 . 83F8 34 CMP EAX,34 ; 比較是否超過 52 項跳向驗證的地方
004E3436 . 7E 0A JLE SHORT VCHM.004E3442 ; ***爆破2:將Jle改成Jmp***
004E3438 . 807D EF 00 CMP BYTE PTR SS:[EBP-11],0 ; [EBP-11]=[77FA23]值關鍵比較之一

004E335A 32C0 XOR AL,AL ; ***爆破2:關鍵點之一 改成XOR AL,DL***
004E335C . 74 04 JE SHORT VCHM.004E3362
004E335E > 33C0 XOR EAX,EAX
004E3360 . EB 02 JMP SHORT VCHM.004E3364
004E3362 > B0 01 MOV AL,1 ; 標誌位之一
004E3364 > 8845 EF MOV BYTE PTR SS:[EBP-11],AL

★☆★:
改算法(有局限性:只支持等於10位長度的用戶名):
由於計碼實在太長,要看個清清楚楚明明白白實在折磨人(烤你耐性),有機會再搞出來,偶只是找出產生關鍵比較碼的某地方!
004E6F5D |. 8B00 MOV EAX,DWORD PTR DS:[EAX] ; 啟動檢測
004E6F5F |. BA EC874E00 MOV EDX,VCHM.004E87EC ; ASCII "Email"
004E6F64 |. E8 B702F9FF CALL VCHM.00477220
004E6F69 |. 8B85 28FEFFFF MOV EAX,DWORD PTR SS:[EBP-1D8] ; 用戶名
……往後有一大段檢測和算碼的,這裡就不貼了……
004E771E |. E8 B1D9F1FF |CALL VCHM.004050D4
004E7723 |. 885C30 FF |MOV BYTE PTR DS:[EAX+ESI-1],BL ; ***這裡產生最終之一計算用戶名(與用戶名長度相等)關鍵比較碼<N>的地方***
……
004E7B26 |. E8 A9D5F1FF |CALL VCHM.004050D4
004E7B2B |. 8B55 E0 |MOV EDX,DWORD PTR SS:[EBP-20]
004E7B2E |. 885C10 FF |MOV BYTE PTR DS:[EAX+EDX-1],BL ; ***這裡產生10位關鍵對比碼<M>的地方 ***

在驗證比較時,會取<M>和<N>,如果<N>的長度不為10,就會再度進行計算,這會令比較碼又變來變去了,但<M>好像始終沒變,呵呵,偶就想了個偷懶的辦法(用戶名要求必須10位長度,用戶名、註冊碼任意!)

……
004E770C 83FB 61 CMP EBX,61 ; 改成:"MOV BL,41"+"Nop"
004E770F 7D 05 JGE SHORT VCHM.004E7716 ; 改成:JMP SHORT 004E7716
……
004E7AD5 48 DEC EAX ; 改成:Nop去
004E7AD6 83F8 00 CMP EAX,0
004E7AD9 |. 7C 60 JL SHORT VCHM.004E7B3B
……
004E7B14 83FB 61 CMP EBX,61 ; 改成: "MOV BL,41"+"Nop"
004E7B17 7D 05 JGE SHORT VCHM.004E7B1E ; 改成: JMP SHORT 004E7B1E

這樣改了:輸入特定長度用戶名後重啟動開啟註冊對話視窗時,就發現了「註冊成功!」字樣和「購買」按鈕不見了,同時註冊填寫處鎖死了、功能開放了,應該跟真正註冊差不多吧!
如圖:register.gif


由於對Borland Delph不太瞭解,如果你有好的建議和想法,歡迎指點!
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 10:05 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1