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破解手記(三)