ReGet Junior 2.0破解手記(二) (4千字)

看雪資料發表於2015-11-15

ReGet Junior 2.0破解手記(二)

作者: 囚童[FCG][BCG]
課題: (二)解除ReGet Junior 2.0顯示軟體名稱和版本號的BANNER,做記憶體補丁
背景: PACKED WITH ASProtect v1.2
下載: http://www.cn778.net/download/c_bexpress.zip
工具: TRW2000
    Ultra Edit 32
    R!SC's Process Patcher v1.60

接ReGet Junior 2.0破解手記(一)

在破解手記(一)中,我們講了解除ReGet Junior 2.0廣告動畫畫面的方法兩種。
為便於製作記憶體補丁,再來介紹一下第三種方法:

解除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
0167:00429233 PUSH DWORD [ESI+28]
0167:00429236 CALL EBX
0167:00429238 MOV  [ESI+2C],EAX


下指令: BD* ;清中斷.


按F10,一路來到:

0167:004292DA PUSH EDI
0167:004292DB PUSH EDI
0167:004292DC PUSH BYTE +04
0167:004292DE PUSH DWORD [ESI+24]
0167:004292E1 PUSH DWORD [ESI+20]
0167:004292E4 PUSH EDI
0167:004292E5 PUSH EDI
0167:004292E6 PUSH DWORD [ESI+04]
0167:004292E9 PUSH EDI
0167:004292EA PUSH BYTE +01
0167:004292EC PUSH DWORD E5 〈== 注意這個值
0167:004292F1 CALL EAX
0167:004292F3 TEST EAX,EAX

下指令: CODE ON
記下這裡的程式碼:
4292ED:E5

下指令: E CS:4292ED 0

按F5,程式執行,好,廣告動畫畫面消失。


解除ReGet Junior 2.0顯示軟體名稱和版本號的BANNER


重複上述過程①
顯示軟體名稱和版本號的BANNER出現在螢幕上,並被TRW截獲.(若截獲不到,可退出
重來。)

按F12,直到顯示軟體名稱和版本號的BANNER從螢幕上消失,我們來到:

0167:0042949F AND  DWORD [EBP-04],BYTE +00
0167:004294A3 MOV  ECX,EBX
0167:004294A5 CALL 0042D7FD  〈== 設斷
0167:004294AA AND  DWORD [EDI],BYTE +00 〈== 游標停在這裡
0167:004294AD JMP  0042957C


下指令: BPX 4294A5
按F5退出。

重新執行regetjr.exe,當顯示軟體名稱和版本號的BANNER尚未出現時,按下CTRL+N。
反覆按CTRL+F5,CTRL+N,直到上述程式碼出現在TRW程式碼視窗中。
此時游標停留在設斷一行上。

按F8跟進,來到:

0167:0042D7FD PUSH EBP 〈== 游標停在這裡
0167:0042D7FE MOV  EBP,ESP
0167:0042D800 SUB  ESP,EC
0167:0042D806 PUSH EBX
0167:0042D807 MOV  EBX,ECX
0167:0042D809 PUSH ESI
0167:0042D80A PUSH EDI
0167:0042D80B MOV  EAX,[EBX+04]
0167:0042D80E LEA  EDI,[EBX+04]
0167:0042D811 XOR  ESI,ESI
0167:0042D813 MOV  [004772B8],EAX
0167:0042D818 CMP  [004658B0],ESI
0167:0042D81E JNZ  0042D82B

按F10,一路來到:

0167:0042DB2A MOV  EAX,[EBP-10]
0167:0042DB2D PUSH DWORD 03E8
0167:0042DB32 PUSH EAX
0167:0042DB33 MOV  ECX,[EAX]
0167:0042DB35 CALL NEAR [ECX+64] 〈== 游標停在這裡
0167:0042DB38 MOV  EAX,[EBP-08]
0167:0042DB3B CMP  EAX,ESI
0167:0042DB3D JZ   0042DB45

按F8跟進,來到:

0167:121A3DC0 SUB  ESP,BYTE +1C
0167:121A3DC3 PUSH ESI
0167:121A3DC4 PUSH EDI
0167:121A3DC5 MOV  EDI,[ESP+2C]
0167:121A3DC9 TEST EDI,EDI
0167:121A3DCB JNL  121A3DDA 〈== 注意這裡
0167:121A3DCD POP  EDI
0167:121A3DCE MOV  EAX,80070057
0167:121A3DD3 POP  ESI
0167:121A3DD4 ADD  ESP,BYTE +1C
0167:121A3DD7 RET  08


下指令: CODE ON
記下這裡的程式碼:
121A3DCB:7D 0D

下指令: E CS:121A3DCB 90 90

按F5,程式執行,好,顯示軟體名稱和版本號的BANNER不再在螢幕上出現。


根據上面收集到的資料,我們可以利用R!SC's Process Patcher v1.60製作一個記憶體
補丁。

其指令碼如下:


;ReGetJR補丁程式
;撤除廣告動畫畫面及顯示軟體名稱和版本號的BANNER
;loadregetjr.rpp
T=7000:        ;投放次數
F=REGETJR.EXE:       ;修補物件
O=loadregetjr.EXE:      ;輸出檔案
P=121A3DCB/7D,0D/90,90:      ;替換碼
P=4292ED/E5/00:       ;替換碼
$        ;終止


將指令碼載入R!SC's Process Patcher v1.60中,按“SAVE AND BUILD SCRIPT"按鈕。
輸出檔案loadregetjr.EXE自動生成。

將生成的輸出檔案loadregetjr.EXE存放在與regetjr.exe同一個目錄中。

執行loadregetjr.EXE,程式啟動較慢,但不再出現顯示軟體名稱和版本號的BANNER,
廣告動畫畫面也從視窗中消失。

解除ReGet Junior 2.0顯示軟體名稱和版本號的BANNER,消除ReGet Junior 2.0廣告
動畫畫面,補丁製作的任務到此完成。

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

相關文章