金鋒檔案加密器4.0 (3千字)

看雪資料發表於2002-09-29

本來不想破解(要學習),但受朋友所託,看雪論壇精華里(我是說所有)又沒有此程式的破解,那就姑且湊個數吧!
目標:jfept.exe(金鋒檔案加密器4.0)
aspack2.1加的殼,Dephi程式,(垃圾程式碼真多!)脫殼後分析如下:
使用4個伺服器進行驗證:
如果與第一個伺服器連線成功了,就註冊成功;
如果與第一個伺服器的連線不成功,就改用第二個伺服器進行連線;
如果4個伺服器都連線不上,則註冊失敗;
可以從這裡入手,但此程式是dephi程式,且作者故意在這段程式中加了不少障礙,故跟蹤
比較困難,比如關鍵呼叫用靜態反彙編是看不著的。
分析(一)
:00481436
CODE:00481436 loc_481436:                            ; CODE XREF: CODE:004813F5j
CODE:00481436                mov    edx, offset aIEKBVSI___ ; "正在透過網際網路獲取註冊碼..."
CODE:0048143B                mov    eax, ebx
CODE:0048143D                call    sub_433E88
CODE:00481442                xor    edx, edx
CODE:00481444                mov    eax, [ebx+2E0h]
CODE:0048144A                mov    ecx, [eax]
CODE:0048144C                call    dword ptr [ecx+5Ch]
CODE:0048144F                push    offset aHttpWww_jinfen ; "http://www.jinfengsoft.com/reg/jfept/us"...
CODE:00481454                lea    edx, [ebp-18h]
CODE:00481457                mov    eax, [ebx+2DCh]
CODE:0048145D                call    sub_433E58
CODE:00481462                push    dword ptr [ebp-18h]
CODE:00481465                lea    edx, [ebp-1Ch]
CODE:00481468                mov    eax, [ebx+2D4h]
CODE:0048146E                call    sub_433E58
CODE:00481473                push    dword ptr [ebp-1Ch]
CODE:00481476                push    offset a_htm    ; ".htm"
CODE:0048147B                lea    eax, [ebp-14h]
CODE:0048147E                mov    edx, 4
CODE:00481483                call    sub_40412C
CODE:00481488                mov    edx, [ebp-14h]
CODE:0048148B                mov    eax, ebx
CODE:0048148D                call    sub_481A18
CODE:00481492                test    al, al
CODE:00481494                jnz    loc_481733      ; 成功!退出
CODE:0048149A                push    offset aHttpWww_jinf_0 ; "http://www.jinfengsoft.com/reg/jfept/us"...
CODE:0048149F                lea    edx, [ebp-24h]
CODE:004814A2                mov    eax, [ebx+2DCh]
從伺服器取得註冊碼子程式:
call    sub_481A18
上面這段程式看似簡單,實則複雜,很多呼叫都是這麼使用的:
mov    eax, [ebx+2E0h]
mov    ecx, [eax]
call    dword ptr [ecx+5Ch]
這增加了程式碼不可讀性,且註冊碼並不在程式中計算,真正的註冊是付費後填寫登錄檔單
,作者在在伺服器上建立使用者資料,再由使用者查詢伺服器線上註冊。
基於上面分析,本軟體應該功能是完整的(我是說不象有的軟體註冊前功能不完整-廢話),因此爆破可行。
(二)爆破分析
檔案存在一個註冊標記,啟動時查詢登錄檔,檢查是否是註冊版,若不是則將註冊標記置零。經分析註冊標記存在於兩個地方:
mov    ecx, offset aRegvalue_1 ; "RegValue"
CODE:004CD49B                mov    edx, offset unk_CODE_4CD640
CODE:004CD4A0                mov    eax, edi
CODE:004CD4A2                call    sub_CODE_4C5E58
CODE:004CD4A7                mov    ds:byte_BSS_4D1BAD, 0 ; 就是這裡,程式中多次比較這個地址,另一個地址是在程式段:
mov    ecx, offset aRegvalue_0 ; "RegValue"
CODE:004CCCDF                mov    edx, offset aReg_0 ; "Reg"
CODE:004CCCE4                mov    eax, edi
CODE:004CCCE6                call    sub_CODE_4C5E58
CODE:004CCCEB                mov    ds:byte_BSS_4D1BAD, 0
其實與上面一樣,只是地址不同而已。
我們的工作就是將這條指令修改為:
mov    ds:byte_BSS_4D1BAD, 1就大功告成了,修改如下:
使用十六進位制編輯器開啟jfepr.exe尋找:
8CC7 E86D91FFFF C605AD1B4D0000--改為->>8CC7 E86D91FFFF C605AD1B4D0001
C605AD1B4D0000 C705B01B4D006F000000--改為:C605AD1B4D0001 C705B01B4D006F000000
至於60次使用限制,這個很有意思,我開啟金鋒檔案加密器4.0後,在程式中的狀態條上有一個時間
我數了一下,正好10秒就彈出“註冊”或“退出”並使選單不可用,因此,只需將時鐘interval置0即可,程式總共有8個timer,而10秒的timer就只有timer3一個,因此可使用資源駭客修改這個timer的interval=0就行了。收工。

by softdim[CCG]
ohmanyong@sina.com

相關文章