軟體名稱: ePublisher Gold v1.3 的註冊碼
此文目的: 如何獲得該軟體的註冊碼
除錯工具: SoftICE4.05、W32dsm89.exe
除錯平臺: Win2K
程式設計工具: Turbo c 2.0
作者: chn-boy
寫作日期: 2000-12-03
【正文】
由於這個軟體的註冊演算法異常的複雜,所以具體的跟蹤說明部分就不再給出了,值得提到的一點
就是怎麼下中斷。
先用W32dsm89分析該軟體,使用Found Text,查詢:You entered an incorrect registration
這個出錯的字串,你會發現:
:0045EB77 BA84EC4500 mov edx,
0045EC84 <-- 在該處下中斷
:0045EB7C E83F50FAFF call 00403BC0
:0045EB81 8B952CFEFFFF mov edx, dword
ptr [ebp+FFFFFE2C]
:0045EB87 8D8530FEFFFF lea eax, dword
ptr [ebp+FFFFFE30]
:0045EB8D E8F06BFAFF call 00405782
:0045EB92 8D8530FEFFFF lea eax, dword
ptr [ebp+FFFFFE30]
:0045EB98 E8116EFAFF call 004059AE
:0045EB9D E8DA3BFAFF call 0040277C
:0045EBA2 8B55FC
mov edx, dword ptr [ebp-04]
:0045EBA5 8D8530FEFFFF lea eax, dword
ptr [ebp+FFFFFE30]
:0045EBAB E84053FAFF call 00403EF0
:0045EBB0 E8486CFAFF call 004057FD
:0045EBB5 E8C23BFAFF call 0040277C
:0045EBBA 8D8530FEFFFF lea eax, dword
ptr [ebp+FFFFFE30]
:0045EBC0 E85F6CFAFF call 00405824
:0045EBC5 E8B23BFAFF call 0040277C
:0045EBCA E8C1FBFFFF call 0045E790
<-- 註冊碼演算法Call,關鍵
:0045EBCF 84C0
test al, al
:0045EBD1 745B
je 0045EC2E <--如果al=0那麼程式就報錯了
――――――――――――――――――――――――――――――――――――――――――――
/* 中間的這一部分是顯示註冊成功的程式碼段,這裡省略,歉 */
――――――――――――――――――――――――――――――――――――――――――――
* Possible StringData Ref from Code Obj ->"You entered an incorrect registration
"
->"key.
Please try again."
:0045EC2E B8B4EC4500 mov eax,
0045ECB4
:0045EC33 E820EDFEFF call 0044D958
上面的Call 0045e790為真正註冊碼演算比較子過程,裡面的程式我看了,好複雜哦,跟的
我差點沒有信心了,不過還是堅持過來了。。 :)))) 就是這個Call,看去了我一個上午的
時間。。天啦,時間寶貴啊。。。嘿嘿。好了,閒話少說,言歸正傳:
【演算法分析】
1)假設你輸入的Virtual Code是:3219486678905858 (為何要是16位,後面給出說明)。
程式從第1個字元起把相鄰的2個進行預處理合併成一個字元。如32兩個字元,用
0x33<<4+0x0-
宣告:該文觀點僅代表作者本人,轉載請註明來自看雪專欄