菜鳥破解錄(九)之 CDSpace 1.95
軟體名稱:CDSpace
版 本:1.95
簡 介:一個相當不錯的虛擬光碟機程式,操作簡單,最大可同時使用23個虛擬光碟機。
作 者:xiA Qin
等 級:很菜....很菜....
破解日期:2000年7月22日
破解工具:Trw2000 1.22
破解目的:學習註冊碼的破解(簡單)
說 明:
本文是在我的軟體破解記錄上整理出來的。所以在文中沒有任何的註冊碼,只作技術交流。如若有紕漏,請各位大俠多指教!
執行程式,輸入註冊資訊。
name: xiA Qin &任意輸入
code: 1234567890123456 必須是16位,為什麼?程式會檢查註冊碼位數。下面會講到
下指令bpx hmemcpy //下中斷點
按F5回到程式,按確定,這時會被Trw2000攔截到。
下指令bd * //屏障中斷點
下指令pmodule //直接跳到程式的領空
按F10來到下面的程式碼。
...................
015F:00409570 CALL 0040FB9E
015F:00409575 LEA ECX,[ESP+10]
015F:00409579 CALL 0040FB1A
015F:0040957E XOR ESI,ESI
015F:00409580 LEA ECX,[ESP+14]
015F:00409584 MOV [ESP+2C],ESI
015F:00409588 CALL 0040FB1A
015F:0040958D MOV EAX,[EDI+60]
015F:00409590 LEA EBP,[EDI+60]
015F:00409593 MOV BYTE PTR [ESP+2C],01
015F:00409598 CMP DWORD PTR [EAX-08],06
015F:0040959C JGE 004095AA
015F:0040959E PUSH ESI
015F:0040959F PUSH ESI
015F:004095A0 PUSH 00418810
015F:004095A5 JMP 004096AC
把16進位制的10換算成10進位制=16,表示註冊碼
015F:004095AA MOV EDX,[EDI+64]
┍──────────── 是16位
015F:004095AD LEA EBX,[EDI+64]
↓
015F:004095B0 CMP DWORD PTR [EDX-08],10 //檢查註冊碼的位數是不是16位。
015F:004095B4 JZ 004095C2
//是16位就跳到004095C2繼續檢查註冊碼是否正確,
015F:004095B6 PUSH ESI
不然死給你看。當然我們可以把它改成無條件
015F:004095B7 PUSH ESI
跳轉 JMP 。
015F:004095B8 PUSH 004187FC
015F:004095BD JMP 004096AC
015F:004095C2 XOR ECX,ECX
015F:004095C4 MOV AL,[ECX+EDX]
015F:004095C7 CMP AL,30
015F:004095C9 JL 004095CF
015F:004095CB CMP AL,39
015F:004095CD JLE 004095DF
015F:004095CF CMP AL,41
015F:004095D1 JL 0040969E
015F:004095D7 CMP AL,46
015F:004095D9 JG 0040969E
015F:004095DF INC ECX
015F:004095E0 CMP ECX,08
015F:004095E3 JL 004095C4
015F:004095E5 LEA ECX,[ESP+1C]
015F:004095E9 PUSH ECX
015F:004095EA PUSH ECX
015F:004095EB MOV ECX,ESP
015F:004095ED MOV [ESP+20],ESP
015F:004095F1 PUSH EBP
015F:004095F2 CALL 0040FC0A
015F:004095F7 MOV ECX,EDI
015F:004095F9 CALL 004096F0
015F:004095FE LEA ECX,[ESP+10]
015F:00409602 CALL 0040FCE2
015F:00409607 XOR EDX,EDX
<--|
015F:00409609 LEA EAX,[ESP+14]
|
015F:0040960D MOV DL,[ESI+ESP+1C]
|計
015F:00409611 PUSH EDX
|算
015F:00409612 PUSH 004187F4
|正
015F:00409617 PUSH EAX
|確
015F:00409618 CALL 0040FB98
|的
015F:0040961D ADD ESP,0C
|注
015F:00409620 LEA ECX,[ESP+14]
|冊
015F:00409624 PUSH ECX
|碼
015F:00409625 LEA ECX,[ESP+14]
|.
015F:00409629 CALL 0040FBEC
|注意 EDX 的變化。
015F:0040962E INC ESI
|
015F:0040962F CMP ESI,08
|
015F:00409632 JL 00409607
<--|
015F:00409634 LEA ECX,[ESP+10]
015F:00409638 CALL 0040FBC8
015F:0040963D MOV ECX,EBX
//正確的註冊碼 D EAX.
015F:0040963F CALL 0040FBC8
015F:00409644 MOV EAX,[EBX]
015F:00409646 MOV EDX,[ESP+10]
015F:0040964A PUSH EAX
015F:0040964B PUSH EDX
015F:0040964C CALL [0041268C]
015F:00409652 ADD ESP,08
015F:00409655 TEST EAX,EAX
015F:00409657 PUSH 00
015F:00409659 PUSH 00
015F:0040965B JNZ 004096A7
//比較註冊碼是否相等。
015F:0040965D PUSH 004187D4
015F:00409662 CALL 0040FB92
//註冊成功對話方塊。
015F:00409667 CALL 0040FB68
015F:0040966C MOV ESI,[EAX+04]
015F:0040966F MOV EAX,[EBP+00]
015F:00409672 PUSH EAX
015F:00409673 PUSH 004187CC
015F:00409678 MOV ECX,ESI
015F:0040967A CALL 0040BD70
//註冊失敗對話方塊。
015F:0040967F MOV EAX,[EBX]
015F:00409681 MOV ECX,ESI
015F:00409683 PUSH EAX
015F:00409684 PUSH 004187C0
015F:00409689 CALL 0040BD70
015F:0040968E MOV ECX,EDI
015F:00409690 MOV BYTE PTR [ESI+000000C4],00
.........................