• 标 题:注册码算法 (2千字)
  • 作 者:lijing
  • 时 间:2001-1-14 10:47:46
  • 链 接:http://bbs.pediy.com

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
重新注册,成功。

由于本人水平所限,可能很多地方没说清楚,欢迎交流。