vfp&exe1.70註冊碼計算 (2千字)

看雪資料發表於2001-06-04

vfp&exe1.72C註冊碼計算

    據其幫助檔案,知道註冊方式為keyfile保護。keyfile應在檔案安裝目錄下。
    所以用filemon監視,知道keyfile為vfp&exe.bin,偽造它。
    經過一番艱苦跟蹤後終於知道關鍵點

:0045640F E8B4150000              call 004579C8

F8進入,比對關鍵
......
:004579E5 8A27    mov ah, byte ptr [edi] <--依次取密碼字串“好
                                          孩子8好孩子8...”
                                          ascii碼對應為BA C3
                                          BA A2 D7 D3 38....
:004579E7 8A03    mov al, byte ptr [ebx] <--依次取vfp&exe.bin字串ascii碼
:004579E9 80F800  cmp al, 00
:004579EC 7406    je 004579F4
:004579EE 38E0    cmp al, ah
:004579F0 7402    je 004579F4
:004579F2 30E0    xor al, ah            <--兩者異或
:004579F4 8806    mov byte ptr [esi], al <--值存入ptr[ebx]
:004579F6 43      inc ebx
:004579F7 46      inc esi
:004579F8 47      inc edi
:004579F9 80FC38  cmp ah, 38
:004579FC 7502    jne 00457A00
:004579FE 89D7    mov edi, edx
:00457A00 E2E3    loop 004579E5          <--迴圈
......

    由動態跟蹤知道,
1.當xor後dword ptr [006EFBF4]==機器碼,則註冊成功。
2.mov al, byte ptr [ebx]  <--ebx初值為006EF8B0
  6EFBF4-6EF8B0+1==837(BCD),
  所以VFP&EXE.bin檔案第837~844字元對應計算後的機器碼。此時的密碼字順序為“A2 D7 D3 38 BA C3 BA A2....”,由XOR原理知道:a = (a xor b) xor b
所以演算如下(我的機器碼為1DDD0D4E):

機器碼 對應ASCII碼  密碼ascii碼  vfp&exe.bin字元位置  hex值
  1    31            A2          第837位          93
  D    44            D7          第838位          93
  D    44            D3          第839位          97
  D    44            38          第840位          7C
  0    30            BA          第841位          8A
  D    44            C3          第842位          87
  4    34            BA          第843位          8E
  E    45            A2          第844位          E7

    這樣只要你構建一個vfp&exe.bin檔案,其字元第837~844位依次填入上述HEX值,你就擁有註冊版了。

    不知誰能寫出一個可以自動生成vfp&exe.bin檔案的序號產生器來,請一定將原始碼提供,最好是DELPHI編譯的。

相關文章