Reptile V2.01之暴力破解(难度:简单,但反映出一种思路)
来源:整理D盘时发现的,软件上提供的地址为:http://www.sausage.com中的某处,估计已有新版本出来了。
但据我估计,其加密方式应该不会变的。Size:2M
功能:制作网页背景的好东东(广告语:感觉设计个人风格的网页很难吗?试试它,轻松做个很有味道的背景出来......)
限制:必须注册才能运行。用UPX5.0压缩过的,用Procdump1.62解压后不能正常运行。
其判断注册的程序是位于windows\system\SausReg.exe
工具:trw2k122,ultraedit
破解过程:
1。用TRW载入运行,设断bpm createwindowex,中断后,下pmodule。
2。一直按F10直到出现NAG屏。在其上的CALL处设断。如下:
0167:004B73BC E8EFEAF4FF CALL 00405EB0
0167:004B73C1 8B1D48924B00 MOV EBX,[004B9248]
0167:004B73C7 8B03 MOV
EAX,[EBX]
0167:004B73C9 E87294F7FF CALL 00430840
0167:004B73CE 8B03 MOV
EAX,[EBX]
0167:004B73D0 BA28744B00 MOV EDX,004B7428
0167:004B73D5 E87E91F7FF CALL 00430558
0167:004B73DA 8B0D80924B00 MOV ECX,[004B9280]
0167:004B73E0 8B03 MOV
EAX,[EBX]
0167:004B73E2 8B15A0C44A00 MOV EDX,[004AC4A0]
0167:004B73E8 E86B94F7FF CALL 00430858
**在此处设断,按F8进入**
0167:004B73ED 8B0DD0914B00 MOV ECX,[004B91D0]
0167:004B73F3 8B03 MOV
EAX,[EBX]
0167:004B73F5 8B15ECC04900 MOV EDX,[0049C0EC]
0167:004B73FB E85894F7FF CALL 00430858
3。再次运行中断后,按F8进入,按F10直到出现NAG屏,重复该两步。依次为:
0167:00430877 33C0 XOR
EAX,EAX
0167:00430879 55 PUSH
EBP
0167:0043087A 689B084300 PUSH DWORD 0043089B
0167:0043087F 64FF30 PUSH DWORD
[FS:EAX]
0167:00430882 648920 MOV
[FS:EAX],ESP
0167:00430885 8BCB MOV
ECX,EBX
0167:00430887 33D2 XOR
EDX,EDX
0167:00430889 8B45F8 MOV
EAX,[EBP-08]
0167:0043088C 8B30 MOV
ESI,[EAX]
0167:0043088E FF5624 CALL NEAR
[ESI+24] **在此处设断,按F8进入**
0167:00430891 33C0 XOR
EAX,EAX
0167:00430893 5A POP
EDX
0167:00430894 59 POP
ECX
0167:00430895 59 POP
ECX
0167:00430896 648910 MOV
[FS:EAX],EDX
*********************
*********************
0167:0042BA32 64FF30 PUSH DWORD
[FS:EAX]
0167:0042BA35 648920 MOV
[FS:EAX],ESP
0167:0042BA38 8B45FC MOV
EAX,[EBP-04]
0167:0042BA3B 6683B8CE01000000 CMP WORD [EAX+01CE],BYTE
+00
0167:0042BA43 7412 JZ
0042BA57
0167:0042BA45 8B5DFC MOV
EBX,[EBP-04]
0167:0042BA48 8B55FC MOV
EDX,[EBP-04]
0167:0042BA4B 8B83D0010000 MOV EAX,[EBX+01D0]
0167:0042BA51 FF93CC010000 CALL NEAR [EBX+01CC]
**在此处设断,按F8进入**
0167:0042BA57 33C0 XOR
EAX,EAX
0167:0042BA59 5A POP
EDX
0167:0042BA5A 59 POP
ECX
0167:0042BA5B 59 POP
ECX
*********************
*********************
0167:004B01AA E8A139F5FF CALL 00403B50
0167:004B01AF 8D45DC LEA
EAX,[EBP-24]
0167:004B01B2 E821C0FCFF CALL 0047C1D8
**在此处设断,按F8进入**
0167:004B01B7 2C01 SUB
AL,01
0167:004B01B9 0F8282000000 JC NEAR 004B0241
0167:004B01BF 48 DEC
EAX
0167:004B01C0 2C02 SUB
AL,02
0167:004B01C2 0F838A000000 JNC NEAR 004B0252
0167:004B01C8 33C9 XOR
ECX,ECX
0167:004B01CA B201 MOV
DL,01
0167:004B01CC A188B94900 MOV EAX,[0049B988]
0167:004B01D1 E862B7F7FF CALL 0042B938
0167:004B01D6 8945F4 MOV
[EBP-0C],EAX
0167:004B01D9 33C0 XOR
EAX,EAX
4。在该CALL进入后,便进入判断核心:
0167:0047C1D8 55 PUSH
EBP
0167:0047C1D9 8BEC MOV
EBP,ESP
0167:0047C1DB 83C4E8 ADD
ESP,BYTE -18
0167:0047C1DE 53 PUSH
EBX
0167:0047C1DF 56 PUSH
ESI
0167:0047C1E0 57 PUSH
EDI
0167:0047C1E1 8BF0 MOV
ESI,EAX
0167:0047C1E3 8D7DE8 LEA
EDI,[EBP-18]
0167:0047C1E6 B906000000 MOV ECX,06
0167:0047C1EB F3A5 REP MOVSD
0167:0047C1ED 8D45E8 LEA
EAX,[EBP-18]
0167:0047C1F0 8B1500B94700 MOV EDX,[0047B900]
0167:0047C1F6 E87183F8FF CALL 0040456C
0167:0047C1FB 33C0 XOR
EAX,EAX
0167:0047C1FD 55 PUSH
EBP
0167:0047C1FE 6867C24700 PUSH DWORD 0047C267
0167:0047C203 64FF30 PUSH DWORD
[FS:EAX]
0167:0047C206 648920 MOV
[FS:EAX],ESP
0167:0047C209 E84AFAFFFF CALL 0047BC58
**此CALL为判断是否注册处,标志存放于AL**
0167:0047C20E A2D4A94B00 MOV [004BA9D4],AL
**若AL=0,则未注册,否则注册**
0167:0047C213 803DD4A94B0000 CMP BYTE [004BA9D4],00
0167:0047C21A 752D JNZ
0047C249 **在此设断,把此处改为JMP**
0167:0047C21C E86FFFFFFF CALL 0047C190
0167:0047C221 84C0 TEST
AL,AL
0167:0047C223 7410 JZ
0047C235
0167:0047C225 813DD8A94B009001+CMP DWORD [004BA9D8],0190
0167:0047C22F 7D04 JNL
0047C235
0167:0047C231 B302 MOV
BL,02
0167:0047C233 EB16 JMP
SHORT 0047C24B
0167:0047C235 8D45E8 LEA
EAX,[EBP-18]
0167:0047C238 E803F7FFFF CALL 0047B940
0167:0047C23D 84C0 TEST
AL,AL
0167:0047C23F 7404 JZ
0047C245
0167:0047C241 B303 MOV
BL,03
在47c21a处,下r fl z,按F5看看,OK,程序正常运行,因此可知,只须把此处的75改为EB即可。
但该程序由UPX压缩,没法直接改,便下断bpm 47c21a,看是什么地方往此处写的75。
5。重新运行,第二次中断后,你会来到下处:
0167:00561061 11DB ADC
EBX,EBX
0167:00561063 730B JNC
00561070
0167:00561065 8A06 MOV
AL,[ESI] **在此处给AL赋值**
0167:00561067 46 INC
ESI
0167:00561068 8807 MOV
[EDI],AL
0167:0056106A 47 INC
EDI **程序在此处中断,edi=47c21a,al=75**
0167:0056106B EBEB JMP
SHORT 00561058
看看EDI恰好等于47c21a,AL恰好等于75。呵呵,看看75是从哪里来的呢?——[ESI]。
6。下断bpm esi-1,重新运行。结果发现程序仍中断于0167:0056106A,由此可知esi-1处的代码没被
改变过。
7。下指令d esi-1,抄下内存中的代码。
75 2d 12 fc 9e 88 a0 b1 a0 81 11 d8 90
--
8。用ultraedit打开Reptile.exe,查找上述代码,把75改为EB即可。
运行一下,作几个背景瞧瞧,呵呵,成功了吧?
<Cracked by KanKer>
- 标 题:Reptile V2.01之暴力破解(难度:简单,但反映出一种思路) (6千字)
- 作 者:KanKer
- 时 间:2000-10-31 10:34:51
- 链 接:http://bbs.pediy.com