• 标 题:ReGet Junior 2.0破解手记(二) (4千字)
  • 作 者:囚童
  • 时 间:2002-2-23 18:16:53

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