?? winimage40.txt
字號(hào):
軟件名稱:WinImage4.0(FileVersion:4.00.4000) WinImage.EXE 320KB
下載地點(diǎn):http://www.winimage.com/winimage.htm
發(fā) 信 人: 井 風(fēng)
時(shí) 間: 2000-12-08
破解工具:Trw20001.22
前 言:此軟件有專業(yè)模式和標(biāo)準(zhǔn)模式兩組注冊(cè)碼,試用期為30天。
詳細(xì)過程:
一、 運(yùn)行TRW2000程序
二、 運(yùn)行WinImage4.0
三、 粗跟蹤
1 點(diǎn)[選項(xiàng)]-->[注冊(cè)]......
2 輸入 姓名:CCCC 注冊(cè)碼: 88888888 (8個(gè)8)
3 Ctrl+N 呼出TRW,下斷點(diǎn):BPX getdlgitemtexta 按F5 返回
4 點(diǎn)[確定],被攔截,
0137:BFF61654 RET 0C
0137:BFF61657 MOV CL,96 <------中斷于此行
0137:BFF61659 PUSH EBP
0137:BFF6165A MOV EBP,ESP
0137:BFF6165C PUSH ECX
0137:BFF6165D SUB ESP,BYTE +3C
0137:BFF61660 PUSH WORD [EBP+08]
0137:BFF61664 PUSH DWORD [EBP+0C]
0137:BFF61667 CALL `KERNEL32!SMapLS_IP_EBP_16`
0137:BFF6166C PUSH EAX
0137:BFF6166D PUSH WORD [EBP+14]
0137:BFF61671 CALL NEAR [BFF61206]
5 bd * , 作廢所有斷點(diǎn)
6 pmodule,直接到達(dá)WinImage領(lǐng)空,如下代碼:
0137:00429093 CALL ESI
0137:00429095 MOV EDI,0043C420 <------來到此行,標(biāo)記為[A]
0137:0042909A PUSH BYTE +7F
0137:0042909C PUSH EDI
0137:0042909D PUSH DWORD 0817
7 按F12,在1次后出現(xiàn)非法注冊(cè)碼錯(cuò)誤對(duì)話框,點(diǎn)[確定]退出
8 分析: 按1次后即出現(xiàn)非法注冊(cè)碼錯(cuò)誤框,說明驗(yàn)證注冊(cè)碼就在這段代碼中(F12 運(yùn)行到遇到 RET,
RETF,IRET指令時(shí)停下來)。接下來應(yīng)找出具體哪個(gè)CALL產(chǎn)生錯(cuò)誤框,并記錄下大致跳轉(zhuǎn)的過程。
以便可找出在哪個(gè)跳轉(zhuǎn)位置可以跳過產(chǎn)生錯(cuò)誤框的的CALL。進(jìn)一步找出驗(yàn)證注冊(cè)碼、計(jì)算注冊(cè)碼
的位置。
四、 細(xì)跟蹤
1 同前,輸入注冊(cè)碼,呼出TRW,設(shè)斷點(diǎn):BPX 00429095 <--是上面A行
2 點(diǎn)[確定],被攔截,代碼如下[步聚7后面]
3 bc * ,清除所有斷點(diǎn)
4 現(xiàn)在要找出產(chǎn)生誤注冊(cè)碼框的的哪個(gè)CALL:按F10,即單步跟蹤。一直按F10,33次,出現(xiàn)錯(cuò)誤框。
5 從步聚1開始重來,做到步聚4時(shí)按F10(33-1)次,即找出了產(chǎn)生錯(cuò)誤的CALL,
是下面代碼后部的0137:00429131 CALL 0041D7F5 ,就是這條指令產(chǎn)生錯(cuò)誤框。
6 著重分析如何跳過0137:00429131 CALL 0041D7F5 這條產(chǎn)生錯(cuò)誤框指令。讀者可從下面代碼由后面向前
讀,弄懂本人的分析過程。
7 現(xiàn)在已基本找出驗(yàn)證注冊(cè)碼的地方了004290AE CALL 0042CD8320這個(gè)CALL中驗(yàn)證注冊(cè)碼,所以要深
入跟蹤進(jìn)這個(gè)CALL。(深入跟蹤步聚在代碼后面)
0137:00429093 CALL ESI
0137:00429095 MOV EDI,0043C420 <------四中的1步中斷于此,按F10 33次出現(xiàn)錯(cuò)誤框。
0137:0042909A PUSH BYTE +7F
0137:0042909C PUSH EDI
0137:0042909D PUSH DWORD 0817
0137:004290A2 PUSH DWORD [EBP+08]
0137:004290A5 CALL ESI
0137:004290A7 PUSH DWORD 0043C800
0137:004290AC PUSH EDI
0137:004290AD PUSH EBX
0137:004290AE CALL 0042CD8320 <---可以確定此CALL為計(jì)算或驗(yàn)證注冊(cè)碼,為后面跳轉(zhuǎn)產(chǎn)生
判斷條件(置EAX寄存器為1),所要著重深入跟蹤此CALL
0137:004290B3 MOV ECX,[0043C800]
0137:004290B9 XOR EDX,EDX
0137:004290BB ADD ESP,BYTE +0C
0137:004290BE CMP EAX,EDX
0137:004290C0 MOV [0043C5E8],EAX
0137:004290C5 JZ 004290CD <---錯(cuò)注冊(cè)碼此行跳
0137:004290C7 MOV [0043C7C4],ECX
0137:004290CD CMP [0043C7C4],EDX
0137:004290D3 MOV [0043CA54],ECX
0137:004290D9 JNZ 004290E0 <---錯(cuò)注冊(cè)碼此行跳
0137:004290DB MOV [0043CA54],EAX
0137:004290E0 PUSH BYTE +01
0137:004290E2 CMP EAX,EDX <---比較寄存器(即相減),產(chǎn)生后一跳轉(zhuǎn)判斷的條件
0137:004290E4 POP ESI
0137:004290E5 JNZ 00429113 <---此行如果不跳則到C行,繼而到B行出錯(cuò)
0137:004290E7 PUSH DWORD 2000
0137:004290EC PUSH DWORD 042D
0137:004290F1 PUSH DWORD 042B
0137:004290F6 MOV [0043C6CC],ESI
0137:004290FC PUSH DWORD [EBP+08]
0137:004290FF MOV [0043C824],ESI
0137:00429105 MOV [0043C420],DL
0137:0042910B MOV [0043C828],DL
0137:00429111 JMP SHORT 00429131 <---如執(zhí)行到此行則跳到B行,記著[C]
0137:00429113 PUSH DWORD 2000
0137:00429118 PUSH DWORD 042D
0137:0042911D PUSH DWORD 042A
0137:00429122 MOV [0043C6CC],EDX
0137:00429128 PUSH DWORD [EBP+08]
0137:0042912B MOV [0043C824],EDX
0137:00429131 CALL 0041D7F5 <---第1步按F10鍵32次來到此行,執(zhí)行此出錯(cuò)誤框,記著[B]行
0137:00429136 ADD ESP,BYTE +10
0137:00429139 PUSH ESI
0137:0042913A PUSH DWORD [EBP+08]
0137:0042913D CALL `USER32!EndDialog`
0137:00429143 MOV EAX,ESI
0137:00429145 JMP SHORT 00429180
0137:00429147 PUSH DWORD [EBP+08]
0137:0042914A CALL 0041D512
0137:0042914F CMP DWORD [0043C5E8],BYTE +00
四、 深入跟蹤
1 追入此004290AE CALL 0042CD8320 此行的CALL,來到下面代碼。
0137:0042CD83 PUSH EBP <---深入跟蹤追入后來到此行
0137:0042CD84 MOV EBP,ESP
0137:0042CD86 SUB ESP,0200
0137:0042CD8C PUSH ESI
.
.
.
0137:0042CDE0 JZ NEAR 0042CE86
0137:0042CDE6 LEA EAX,[EBP+FFFFFF00]
0137:0042CDEC PUSH EAX
0137:0042CDED LEA EAX,[EDI+14051948]
0137:0042CDF3 PUSH EAX
0137:0042CDF4 LEA EAX,[EBP+FFFFFE00]
0137:0042CDFA PUSH EAX
0137:0042CDFB CALL 0042CD36 <---此CALL計(jì)算注冊(cè)碼,
執(zhí)行此行后D EAX 看見標(biāo)準(zhǔn)注冊(cè)碼:144E1ADC
0137:0042CE00 POP ECX
0137:0042CE01 POP ECX
0137:0042CE02 PUSH EAX
0137:0042CE03 CALL `CRTDLL!strcmp`
0137:0042CE08 POP ECX
0137:0042CE09 TEST EAX,EAX
0137:0042CE0B POP ECX
0137:0042CE0C JZ 0042CE86
0137:0042CE0E LEA EAX,[EBP+FFFFFF00]
0137:0042CE14 PUSH EAX
0137:0042CE15 LEA EAX,[EDI+17061954]
0137:0042CE1B PUSH EAX
0137:0042CE1C LEA EAX,[EBP+FFFFFE00]
0137:0042CE22 PUSH EAX
0137:0042CE23 CALL 0042CD36 <---此CALL計(jì)算另一注冊(cè)碼,
執(zhí)行此行后D EAX 看見標(biāo)準(zhǔn)注冊(cè)碼:174F1AEB
0137:0042CE28 POP ECX
0137:0042CE29 POP ECX
0137:0042CE2A PUSH EAX
0137:0042CE2B CALL `CRTDLL!strcmp`
0137:0042CE30 POP ECX
0137:0042CE31 TEST EAX,EAX
0137:0042CE33 POP ECX
0137:0042CE34 JZ 0042CE86
0137:0042CE36 LEA EAX,[EBP+FFFFFF00]
0137:0042CE3C PUSH EAX
0137:0042CE3D LEA EAX,[EDI+10051981]
0137:0042CE43 PUSH EAX
0137:0042CE44 LEA EAX,[EBP+FFFFFE00]
0137:0042CE4A PUSH EAX
0137:0042CE4B CALL 0042CD36 <---此CALL計(jì)算注冊(cè)碼,
執(zhí)行此行后D EAX 看見專業(yè)注冊(cè)碼:104E1815
0137:0042CE50 POP ECX
0137:0042CE51 POP ECX
0137:0042CE52 PUSH EAX
.
.
.
0137:0042CEC0 POP EDI
0137:0042CEC1 POP ESI
0137:0042CEC2 LEAVE
0137:0042CEC3 RET <---------執(zhí)行此行返回呼叫程序
至此,找出注冊(cè)碼!
小 結(jié):
此程序有三處計(jì)算注冊(cè)碼的子程序。有興趣的讀者可追入計(jì)算注冊(cè)碼的CALL,詳細(xì)研究其
算法,寫注冊(cè)機(jī)。
姓名:CCCC 標(biāo)準(zhǔn)注冊(cè)碼:144E1ADC 或 174F1AEB 專業(yè)注冊(cè)碼:104E1815
后 記:
有疑問請(qǐng)與我聯(lián)系:hz.cy@163.net
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -