初學者(13) (2千字)

看雪資料發表於2000-06-09

軟體來源:軟體世界2000年2A
軟體用途:
WinOKE was created because I saw a need for a simple cheap way to do a Karaoke, but without the expense or hassle of getting in the big Karaoke machines. Why not set-up and run a karaoke from your home computer, a system where you could put any text into the program in time to the music would be great. Well here it is, WinOKE, and it's great!

註冊時需要輸入以下內容(所有的內容都將用於計算註冊碼)
Customer Code
Name
Adress 1
Adress 2
Adress 3
Adress 4
Post/Zip Code
Country
Unlocking Code

設中斷bpx hmemcpy,點"註冊"鍵
按F12若干次可找到
CALL 0047FC30
MOV EAX,[00490EA4]
CMP BYTE PTR [EAX],00 <----註冊與否標誌
JZ 0047539C  <-----錯誤由此跳轉
追進0047FC30,找到
        CALL 00403F74
        JZ 0047FE6E
        XOR EAX,EAX
        JMP 0047FE70
0047FE6E    MOV AL,01
        MOV [0049294B],AL
0047FE70    XOR EAX,EAX
因此只需將JMP改為90 90即可使此軟體變為freeware

以下是追蹤註冊碼生成的過程:
設中斷bpx hmemcpy,點"註冊"鍵
按F12待返回到WinOKE程式後,按F10可找到兩個CALL
CALL 00403F74 <----檢測Customer Code
JNZ 0047FE6A

CALL 00403F74 <----檢測Unlocking Code
JZ 0047FE6E    
Customer Code的生成過程:
Customer Code共6位,前4位使用者輸入,後2位由前4位生成
Unlocking Code的生成過程:
Unlocking Code共11位,前3位是固定的"OKE"
第4-9位由使用者輸入項計算生成
最後兩位則有前面的9位計算生成

舉例說明:
Customer Code: 0003**
Name:  LiuTong
Adress 1: HePing
Adress 2:
Adress 3:
Adress 4:
Post/Zip Code: 100028
Country: China
Unlocking Code: ***********

Customer Code的計算:
          0      0      0      3
ASCII碼      30      30    30    33
係數          2      3      4      1
乘積        60      90    c0    33
將乘積相加得1E3
Customer Code中的第一個*的程式碼是3
將1E3右移3位得3C
Customer Code中的第二個*的程式碼是C
從軟體中的程式碼表中查到
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
B R F G D C H K L M  E  N  S  P  A  Z
故Customer Code應為0003GS

Unlocking Code的計算:
第1-3位是固定的:OKE
第4和9位是根據輸入資料的長度計算出來的:
軟體將輸入的資料整理變為:
">0003GS|LIUTONG|HEPING||||100028|CHINA<"
長度為(HEX)27
第4位的程式碼是2,查程式碼得"F"
第9位的程式碼是7,查程式碼得"K"
第5-8位由使用者輸入項計算出來
將">0003GS|LIUTONG|HEPING||||100028|CHINA<"同Customer Code的計算過程
得325D,則第5-8位的程式碼是GFCP
整理第1-9位是OKEFGFCPK
          O      K    E    F    G    F    C    P    K
ASCII碼      4F    4B    45    46    47    46  43  50  4B
係數          2      3    4    1    2    3    4    1    2
乘積        9E    E1  114    46    8E    D2  10C  50  96
將乘積相加得62B
第10位程式碼是B,查程式碼得"N"
將62B右移3位得C5
第11位程式碼是5,查程式碼得"C"
整理Unlocking Code是OKEFGFCPKNC

Customer Code: 0003GS
Name:  LiuTong
Adress 1: HePing
Adress 2:
Adress 3:
Adress 4:
Post/Zip Code: 100028
Country: China
Unlocking Code: OKEFGFCPKNC

相關文章