菜鸟破解实录 之 GWD Text Editor 3.0
软件名称:GWD Text Editor -->(30天试用)
软件版本:3.0
软件下载: http://www.iridis.com/gwd/index.htm
简 介:
功能完整的文字编辑工具,不限制打开文件大小,可读取WordPerfect,MSWord这类常见软件的文件类型。
作 者:Backbuy / xiA Qin
级 别:刚学不久
解密日前:2000年8月14日
解密工具:Trw2000 1.22
破解目的:学习注册码的破解。(简单)
说 明:
以前,破解过这个软件,当时用的是暴力,没有找到注册码。
backboy兄的指导下,终于找到了注册码,重新把它贴出来。
首先运行GWD Text Editor
输入注册信息
register: 9876543210 &任意输入
下指令bpx hmemcpy //下中断点
按F5回到程序,按确定,这时会被Trw2000拦截到。
下指令bd * //屏障中断点
下指令pmodule //直接跳到程序的领空
按F10来到下面指令
...............
015F:004AD304 6810905A00 PUSH
005A9010
015F:004AD309 E8CADEFFFF CALL
004AB1D8 //通过下面的分析。肯定此CALL.
015F:004AD30E 59
POP ECX
有问题。按F8进入。
015F:004AD30F 85C0
TEST EAX,EAX //以EAX=1作为注册标志。
015F:004AD311 746B
JZ 004AD37E //跳到004AD37E,就死定了
015F:004AD313 E8B8EAFFFF CALL
004ABDD0
015F:004AD318 8BF0
MOV ESI,EAX
015F:004AD31A 89357C905A00 MOV
[005A907C],ESI
015F:004AD320 85F6
TEST ESI,ESI
015F:004AD322 742E
JZ 004AD352
015F:004AD324 6A40
PUSH 40
015F:004AD326 6A04
PUSH 04
015F:004AD328 68234E0000 PUSH
00004E23
015F:004AD32D 833D44495D0000 CMP
DWORD PTR [005D4944],00
015F:004AD334 8B03
MOV EAX,[EBX]
015F:004AD336 8B500C MOV
EDX,[EAX+0C]
015F:004AD339 52
PUSH EDX
015F:004AD33A 7508
JNZ 004AD344
015F:004AD33C 8B0D6B505900 MOV
ECX,[0059506B]
015F:004AD342 EB06
JMP 004AD34A
015F:004AD344 8B0D44495D00 MOV
ECX,[005D4944]
015F:004AD34A 51
PUSH ECX
015F:004AD34B E8E8C70000 CALL
004B9B38 //注册成功对话框
015F:004AD350 EB5D
JMP 004AD3AF
015F:004AD352 6A10
PUSH 10
015F:004AD354 6A04
PUSH 04
015F:004AD356 68244E0000 PUSH
00004E24
015F:004AD35B 833D44495D0000 CMP
DWORD PTR [005D4944],00
015F:004AD362 8B03
MOV EAX,[EBX]
015F:004AD364 8B500C MOV
EDX,[EAX+0C]
015F:004AD367 52
PUSH EDX
015F:004AD368 7507
JNZ 004AD371
015F:004AD36A A16B505900 MOV
EAX,[0059506B]
015F:004AD36F EB05
JMP 004AD376
015F:004AD371 A144495D00 MOV
EAX,[005D4944]
015F:004AD376 50
PUSH EAX
015F:004AD377 E8BCC70000 CALL
004B9B38
015F:004AD37C EB31
JMP 004AD3AF
015F:004AD37E 6A30
PUSH 30
015F:004AD380 6A04
PUSH 04
015F:004AD382 C60510905A0000 MOV
BYTE PTR [005A9010],00
015F:004AD389 68224E0000 PUSH
00004E22
015F:004AD38E 8B13
MOV EDX,[EBX]
015F:004AD390 833D44495D0000 CMP
DWORD PTR [005D4944],00
015F:004AD397 8B4A0C MOV
ECX,[EDX+0C]
015F:004AD39A 51
PUSH ECX
015F:004AD39B 7507
JNZ 004AD3A4
015F:004AD39D A16B505900 MOV
EAX,[0059506B]
015F:004AD3A2 EB05
JMP 004AD3A9
015F:004AD3A4 A144495D00 MOV
EAX,[005D4944]
015F:004AD3A9 50
PUSH EAX
015F:004AD3AA E889C70000 CALL
004B9B38 //注册失败对话框
015F:004AD3AF BA01000000 MOV
EDX,00000001
015F:004AD3B4 833D7C905A0000 CMP
DWORD PTR [005A907C],00
015F:004AD3BB 7501
JNZ 004AD3BE
015F:004AD3BD 42
INC EDX
015F:004AD3BE 52
PUSH EDX
015F:004AD3BF 53
PUSH EBX
015F:004AD3C0 8B4B0C MOV
ECX,[EBX+0C]
015F:004AD3C3 FF5120 CALL
[ECX+20]
015F:004AD3C6 83C408 ADD
ESP,08
015F:004AD3C9 5E
POP ESI
015F:004AD3CA 5B
POP EBX
015F:004AD3CB 5D
POP EBP
015F:004AD3CC C3
RET
.............................
按F8进入004AD309 CALL 004AB1D8
015F:004AB1D8 PUSH EBP
015F:004AB1D9 MOV EBP,ESP
015F:004AB1DB PUSH EBX
015F:004AB1DC PUSH ESI
015F:004AB1DD MOV EBX,[EBP+08]
015F:004AB1E0 MOV ESI,005D273C
015F:004AB1E5 MOV AL,[EBX]
015F:004AB1E7 INC EBX
015F:004AB1E8 XOR EDX,EDX
015F:004AB1EA MOV DL,AL
015F:004AB1EC PUSH EDX
015F:004AB1ED CALL 00587248
015F:004AB1F2 POP ECX
015F:004AB1F3 CMP EAX,47 <--比较注册码的第1位
015F:004AB1F6 JZ 004AB1FF <--相等,就跳。继续比较下一位。
015F:004AB1F8 XOR EAX,EAX
015F:004AB1FA JMP 004AB2F2
015F:004AB1FF MOV DL,[EBX]
015F:004AB201 INC EBX
015F:004AB202 XOR ECX,ECX
015F:004AB204 MOV CL,DL
015F:004AB206 PUSH ECX
015F:004AB207 CALL 00587248
015F:004AB20C POP ECX
015F:004AB20D CMP EAX,57 <--比较注册码的第2位
015F:004AB210 JZ 004AB219 <--相等,就跳。继续比较下一位。
015F:004AB212 XOR EAX,EAX
015F:004AB214 JMP 004AB2F2
015F:004AB219 MOV DL,[EBX]
015F:004AB21B INC EBX
015F:004AB21C XOR ECX,ECX
015F:004AB21E MOV CL,DL
015F:004AB220 PUSH ECX
015F:004AB221 CALL 00587248
015F:004AB226 POP ECX
015F:004AB227 CMP EAX,44 <--比较注册码的第3位
015F:004AB22A JZ 004AB233 <--相等,就跳。继续比较下一位。
015F:004AB22C XOR EAX,EAX
015F:004AB22E JMP 004AB2F2
015F:004AB233 MOV DL,[EBX]
015F:004AB235 INC EBX
015F:004AB236 MOVSX ECX,DL
015F:004AB239 CMP ECX,2D <--比较注册码的第4位
015F:004AB23C JZ 004AB245 <--相等,就跳。继续比较下一位。
015F:004AB23E XOR EAX,EAX
015F:004AB240 JMP 004AB2F2
015F:004AB245 MOV DL,[EBX]
015F:004AB247 INC EBX
015F:004AB248 MOVSX ECX,DL
015F:004AB24B CMP ECX,33 <--比较注册码的第5位
015F:004AB24E JZ 004AB257 <--相等,就跳。继续比较下一位。
015F:004AB250 XOR EAX,EAX
015F:004AB252 JMP 004AB2F2
015F:004AB257 MOV DL,[EBX]
015F:004AB259 INC EBX
015F:004AB25A MOVSX ECX,DL
015F:004AB25D CMP ECX,30 <--比较注册码的第6位
015F:004AB260 JZ 004AB269 <--相等,就跳。继续比较下一位。
015F:004AB262 XOR EAX,EAX
015F:004AB264 JMP 004AB2F2
015F:004AB269 MOV DL,[EBX]
015F:004AB26B INC EBX
015F:004AB26C MOVSX ECX,DL
015F:004AB26F CMP ECX,2D <--比较注册码的第7位
015F:004AB272 JZ 004AB278 <--相等,就跳。继续比较下一位。
015F:004AB274 XOR EAX,EAX
015F:004AB276 JMP 004AB2F2
015F:004AB278 MOV DL,[EBX]
015F:004AB27A XOR ECX,ECX
015F:004AB27C MOV CL,DL
015F:004AB27E INC EBX
015F:004AB27F TEST BYTE PTR [ECX*2+ESI+03],01
//检查注册码第8位是否是字母。
015F:004AB284 JNZ 004AB28A
015F:004AB286 XOR EAX,EAX
015F:004AB288 JMP 004AB2F2
015F:004AB28A MOV DL,[EBX]
015F:004AB28C XOR ECX,ECX
015F:004AB28E MOV CL,DL
015F:004AB290 INC EBX
015F:004AB291 TEST BYTE PTR [ECX*2+ESI+03],01
//检查注册码第9位是否是字母
015F:004AB296 JNZ 004AB29C
015F:004AB298 XOR EAX,EAX
015F:004AB29A JMP 004AB2F2
015F:004AB29C MOV DL,[EBX]
015F:004AB29E XOR ECX,ECX
015F:004AB2A0 MOV CL,DL
015F:004AB2A2 INC EBX
015F:004AB2A3 TEST BYTE PTR [ECX*2+ESI+02],04
//检查注册码第10位是否是数字
015F:004AB2A8 JNZ 004AB2AE
015F:004AB2AA XOR EAX,EAX
015F:004AB2AC JMP 004AB2F2
015F:004AB2AE MOV DL,[EBX]
015F:004AB2B0 XOR ECX,ECX
015F:004AB2B2 MOV CL,DL
015F:004AB2B4 INC EBX
015F:004AB2B5 TEST BYTE PTR [ECX*2+ESI+02],04
//检查注册码第11位是否是数字
015F:004AB2BA JNZ 004AB2C0
015F:004AB2BC XOR EAX,EAX
015F:004AB2BE JMP 004AB2F2
015F:004AB2C0 MOV DL,[EBX]
015F:004AB2C2 XOR ECX,ECX
015F:004AB2C4 MOV CL,DL
015F:004AB2C6 INC EBX
015F:004AB2C7 TEST BYTE PTR [ECX*2+ESI+02],04
//检查注册码第12位是否是数字
015F:004AB2CC JNZ 004AB2D2
015F:004AB2CE XOR EAX,EAX
015F:004AB2D0 JMP 004AB2F2
015F:004AB2D2 MOV DL,[EBX]
015F:004AB2D4 XOR ECX,ECX
015F:004AB2D6 MOV CL,DL
015F:004AB2D8 INC EBX
015F:004AB2D9 TEST BYTE PTR [ECX*2+ESI+02],04
//检查注册码第13位是否是数字
015F:004AB2DE JNZ 004AB2E4
015F:004AB2E0 XOR EAX,EAX
015F:004AB2E2 JMP 004AB2F2
015F:004AB2E4 CMP BYTE PTR [EBX],00 //检查注册码的位数,13位
015F:004AB2E7 JZ 004AB2ED
//超过13位,就跳。玩完
015F:004AB2E9 XOR EAX,EAX
015F:004AB2EB JMP 004AB2F2
015F:004AB2ED MOV EAX,00000001
<--将EAX赋值为1
015F:004AB2F2 POP ESI
015F:004AB2F3 POP EBX
015F:004AB2F4 POP EBP
015F:004AB2F5 RET
..................
我们把比较的数字抄下了分别是
1 2 3 4 5 6 7
47 57 44 2D 33 30 2D
查ASCII字符表,十六进制。
十六进制: 47 57 44 2D 33 30 2D
分别对应: G W D - 3 0 - (GWD-30-
)
X代表字母。*代表数字。
8 9 10 11 12 13
X X * * * *
整理一下,输入注册信息
code: GWD-30-XX****
比如:我的注册码是GWD-30-AB1234
后 记:
GWD Text Editor是通过读取安装目录下的文件Reg.lic来判断,程序是否注册。不管注册码是否正确。如果把文件Reg.lic删除,GWD
Text Editor又成了非注册版。
- 标 题:菜鸟破解实录 之 GWD Text Editor 3.0 (9千字)
- 作 者:xiA Qin
- 时 间:2000-8-16 9:09:07
- 链 接:http://bbs.pediy.com