ReGet Junior 2.0破解手記(一) (3千字)

看雪資料發表於2002-02-23

ReGet Junior 2.0破解手記(一)

作者: 囚童[FCG][BCG]
課題: (一)解除ReGet Junior 2.0廣告動畫畫面
背景: PACKED WITH ASProtect v1.2
下載: http://www.cn778.net/download/c_bexpress.zip
工具: TRW2000
    Ultra Edit 32
    FileMon V4.29

ReGet Junior 2.0支援HTTP與FTP續傳,內建10種語言,可以按照需要來切換.可設定
/儲存下傳檔名單,萬一FTP Server接不通,ReGet會一直會試下傳檔案直到完成為
止.它也可以下傳整個目錄,自定同時下傳檔案的數目,節省時間與省卻不少麻煩。

ReGet Junior 2.0是一個免費軟體,但在開始執行時會有一個一現而過的顯示軟體名
稱和版本號的BANNER,程式主視窗的上方始終有一個動畫廣告BANNER視窗,沒有註冊入口。

先執行FileMon,然後安裝ReGet Junior 2.0,從FileMon可以看到在安裝過程中,向
C:\WINDOWS\SYSTEM目錄中寫入了一些檔案,其中有.DLL檔案和.GIF檔案。

將安裝後的ReGet Junior 2.0主檔案regetjr.exe做一個備份.

執行regetjr.exe,從FileMon可以看到,regetjr會從C:\WINDOWS\SYSTEM中讀取一些
檔案,其中有cd_clint.dll、b_372800.GIF和b_372900.GIF.



解除ReGet Junior 2.0廣告動畫畫面方法一:

用資源管理器開啟C:\WINDOWS\SYSTEM,在AdCache子目錄下找到圖形動畫檔案b_372800
.GIF和b_372900.GIF,將其字尾改為G1F或乾脆刪除。

再次執行regetjr.exe,廣告動畫畫面消失。



解除ReGet Junior 2.0廣告動畫畫面方法二:

啟動TRW2000,點OK,TRW2000在螢幕右下角生成一個小圖示.

執行regetjr.exe,當顯示軟體名稱和版本號的BANNER完整出現並穩定時,按下CTRL+N,
程式被TRW2000中斷。

下指令: BPX GETPROCADDRESS
按F5,程式執行並被TRW截獲.(若截獲不到,可退出重來。)
下指令: BD* ;清中斷.

下指令: PMODULE
回到regetjr域:

0167:00429207  PUSH  DWORD 0046D2B8
0167:0042920E  CALL  NEAR [004601F0]
0167:00429214  XOR  EDI,EDI
0167:00429214  XOR  EDI,EDI
0167:00429216  MOV  [ESI+28],EAX
0167:00429219  CMP  EAX,EDI
0167:0042921B  JZ    0042923B
0167:0042921D  MOV  EBX,[004600F0]
0167:00429223  PUSH  DWORD 0046D2AC
0167:00429228  PUSH  EAX
0167:00429229  CALL  EBX
0167:0042922B  PUSH  DWORD 0046D29C 〈== 游標停在這裡
0167:00429230  MOV  [ESI+30],EAX 〈== EAX=10015792
0167:00429233  PUSH  DWORD [ESI+28]
0167:00429236  CALL  EBX
0167:00429238  MOV  [ESI+2C],EAX

向上看,在進入這個CALL之前,程式在429223處向堆疊壓入一個數46D2AC,我們來看
一下里面是什麼。

下指令: D DS:46D2AC
TRW給出:
0046D2AC 53 65 72 76 69 63 65 53-68 6F 77 00 43 44 5F 43 ServiceShow.CD_C
0046D2BC 6C 69 6E 74 2E 64 6C 6C-00 00 00 00 2E 45 58 45 lint.dll.....EXE

哈,正是我們在安裝ReGet Junior 2.0時看到的cd_clint.dll。ServiceShow是它的一
個函式,EAX=10015792是函式的入口。

下指令: BPX ServiceShow
按F5,程式執行並被TRW截獲.來到cd_clint域:

0167:10015792  MOV  EAX,10037056 〈== 游標停在這裡
0167:10015797  CALL  10027CC8
0167:1001579C  SUB  ESP,BYTE +14
0167:1001579F  PUSH  EBX
0167:100157A0  PUSH  ESI
0167:100157A1  PUSH  EDI
0167:100157A2  MOV  EDI,[EBP+08] 〈==  EDI<=E5
0167:100157A5  LEA  ECX,[EBP-18]
0167:100157A8  MOV  [EBP-10],ESP
0167:100157AB  MOV  [1004DA30],EDI
0167:100157B1  CALL  10013BE6
0167:100157B6  MOV  EBX,[EBP+28]

下指令: BD* ;清中斷.

按F10,一路走一路看,來到100157A2,此時EDI=E5。
試著下指令: REDI 0
按F5試一下。好,廣告動畫畫面消失。

我們來動手改程式:

下指令: A 100157A2L

100157A2 XOR EDI EDIL
100157A4 NOPL
100157A5L

記下修改前後的十六進位制碼.
使用Ultra Edit 32,按下面的方法對cd_clint.dll做最後的修改:

578B7D088D4DE8
--31FF90------

將修改後的cd_clint.dll存放在與regetjr.exe同一個目錄中。

解除ReGet Junior 2.0廣告動畫畫面的任務到此完成。

相關文章:ReGet Junior 2.0破解手記(一) ReGet Junior 2.0破解手記(二) ReGet Junior 2.0破解手記(三

相關文章