註冊碼演算法 (2千字)

看雪資料發表於2001-01-14

WinTopo Pro 2.11註冊碼計算方法

1、啟動該軟體,輸入任意的註冊碼(16位)後,退出。此時註冊資訊會儲存在軟體安裝目錄的1814fd99.dat檔案中。
2、啟動該軟體和TRW2000,下斷點bpx 0040AD72,再開啟"Help"選單下的"License Wintopo Pro"選項,則會被中斷。

:0040AD72 50                      push eax
:0040AD73 E8A7050000              call 0040B31F      ; 關鍵
:0040AD78 8B45F0                  mov eax, dword ptr [ebp-10]
:0040AD7B 3B45EC                  cmp eax, dword ptr [ebp-14]  ; 相等即可
:0040AD7E 7514                    jne 0040AD94
:0040AD80 8B45E8                  mov eax, dword ptr [ebp-18]
:0040AD83 3B45E4                  cmp eax, dword ptr [ebp-1C]  ; 相等即可
:0040AD86 750C                    jne 0040AD94

3、進入0040AD73  call 0040B31F呼叫,會看到對於註冊碼的變換過程。
其中有一張表格,由16個字元組成,對應數字0-F:
表格  G N P X W C D K R J F M B H T L
對應  0 1 2 3 4 5 6 7 8 9 A B C D E F
註冊碼就由這些字元組成。

4、執行完0040AD73  call 0040B31F的呼叫後,在記憶體[ebp-1c]處會儲存計算結果。如:
18 3A 5C 7E D5 8F EF 0D-90 B2 D4 F6 57 03 D3 BF
^^^^^^^^^^^ *********** ^^^^^^^^^^^ ***********
    (1)        (2)          (3)        (4)
其中,(1)為[ebp-1c]處內容,由你輸入的註冊碼算得,(2)為[ebp-18]處內容,為真正的註冊碼內容,(3)為[ebp-14]處內容,由你輸入的註冊碼算得,(4)為[ebp-10]處內容,為真正的註冊碼內容。

5、只要(1)=(2),(3)=(4)即可註冊成功。
記下(2)和(4)處的內容。

6、下面反推註冊碼。
(2)處內容為:D5 8F EF 0D    根據此數由左向右得出註冊碼以下幾位:
註冊碼第1位=D  換算為H    ; 由上面的表格得來
      第8位=5        C
      第3位=8        R
      第A位=F        L
      第5位=E        T
      第C位=F        L
      第7位=0        G
      第E位=D        H
(4)處內容為:57 03 D3 BF
則註冊碼第9位=5  換算為C
      第0位=7        K
      第B位=0        G
      第2位=3        X
      第D位=D        H
      第4位=3        X
      第F位=B        M
      第6位=F        L

7、最後,得出真正的註冊碼為:KHXRXTLGCCLGLHHM
重新註冊,成功。

由於本人水平所限,可能很多地方沒說清楚,歡迎交流。

相關文章