東晨庫管網路版 6.5註冊演算法分析

看雪資料發表於2003-08-14

東晨庫管網路版 6.5註冊演算法分析                
 
軟體名稱:
 東晨庫管網路版 6.5
 
軟體簡介:
 東晨庫管網路版 6.5  
軟體大小:6158KB
軟體語言:簡體中文
軟體類別:國產軟體/共享版/倉儲租借
執行環境:Win9x/Me/NT/2000/XP
加入時間:2003-8-11 9:22:08
下載次數:88
軟體評級:
聯 系 人:zhusongdong@hotmail.com
開 發 商:Home Page
軟體介紹:

  是企業單位對倉庫日常工作實現計算機智慧化處理的應用軟體。能處理商品採購、銷售、調撥、組裝、拆卸借入、借出、歸還、盤點等一般
倉庫工作,能自動對庫存超限的商品報警,多種報表功輸出功能,讓你的倉庫管理工作輕鬆自如。  
下載地址:
 下載地址:http://www.onlinedown.net/soft/16093.htm
------------------------------------------------------------  
破解作者:
 yzez[DFCG]
 
破解工具:
 ollydbg1.09增強版
 
破解目的:
 目的有兩個:一是研究它的註冊演算法;二是研究ollydbg的具體使用!讓ollydbg象SICE和TRW一樣輕鬆設定斷點。
作者說明:請不要根據本演算法制作序號產生器,本文只為交流技術,對於由此所引起的一切責任,本人不承擔任何後果.  
------------------------------------------------------------
 
[破解過程]
 
詳細過程:
1、不知道怎麼一回事,我的系統下SICE和TRW都不正常,萬能斷點設不下,用條件斷點可行,但只能用幾分鐘,過了幾分鐘,對不起系統罷工
,請高手指點一下怎樣解決這個問題。所以最近我一直在研究ollydbg的用法,這篇破文也算一個小結吧!
2、廢話少說開工吧!用FI查殼,無殼!爽!VB6.0程式!用ollydbg常用斷點:vbastrcomp設斷!斷不下?!暈倒!好吧!重新來過,用ollyd
bg載入程式,在ollydbg最下邊的小框裡輸入:bpx vbastrcomp,然後按:Enter鍵,等一會兒,會在主介面出現一個資訊框,右鍵單擊,又會出
現一個選單欄,在這個選單欄裡選:Set breakpoint on every command,就是把資訊框裡所有的CALL都設斷!設斷下來以後,GO!按F9鍵,會
出現多次中斷!在這個過程中,有許多步要走,要有耐心,一直走,等到出現註冊資訊框後,填入註冊資訊:98765432!我的機器碼是:
6856035。點確定,程式被斷下來了吧!

005C4D17   .  FF15 A4104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaOb>;  MSVBVM60.__vbaObjSet----按確定後,中斷在此,按F8往下!
005C4D1D   .  8BF8          MOV     EDI, EAX
005C4D1F   .  8D55 E4       LEA     EDX, DWORD PTR SS:[EBP-1C]
005C4D22   .  52            PUSH    EDX
005C4D23   .  57            PUSH    EDI
005C4D24   .  8B0F          MOV     ECX, DWORD PTR DS:[EDI]
005C4D26   .  FF91 A0000000 CALL    DWORD PTR DS:[ECX+A0]
005C4D2C   .  3BC3          CMP     EAX, EBX
005C4D2E   .  DBE2          FCLEX
005C4D30   .  7D 12         JGE     SHORT DCKG6_4.005C4D44
005C4D32   .  68 A0000000   PUSH    0A0
005C4D37   .  68 B06C4400   PUSH    DCKG6_4.00446CB0
005C4D3C   .  57            PUSH    EDI
005C4D3D   .  50            PUSH    EAX
005C4D3E   .  FF15 68104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaHr>;  MSVBVM60.__vbaHresultCheckObj
005C4D44   >  8B06          MOV     EAX, DWORD PTR DS:[ESI]          ;  DCKG6_4.006744A8
005C4D46   .  56            PUSH    ESI
005C4D47   .  FF90 04030000 CALL    DWORD PTR DS:[EAX+304]
005C4D4D   .  8D4D D8       LEA     ECX, DWORD PTR SS:[EBP-28]
005C4D50   .  50            PUSH    EAX
005C4D51   .  51            PUSH    ECX
005C4D52   .  FF15 A4104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaOb>;  MSVBVM60.__vbaObjSet
005C4D58   .  8BF0          MOV     ESI, EAX
005C4D5A   .  8D45 E0       LEA     EAX, DWORD PTR SS:[EBP-20]
005C4D5D   .  50            PUSH    EAX
005C4D5E   .  56            PUSH    ESI
005C4D5F   .  8B16          MOV     EDX, DWORD PTR DS:[ESI]          ;  DCKG6_4.006744A8
005C4D61   .  FF92 A0000000 CALL    DWORD PTR DS:[EDX+A0]            ;  MSVBVM60.733EFD34
005C4D67   .  3BC3          CMP     EAX, EBX
005C4D69   .  DBE2          FCLEX
005C4D6B   .  7D 12         JGE     SHORT DCKG6_4.005C4D7F
005C4D6D   .  68 A0000000   PUSH    0A0
005C4D72   .  68 B06C4400   PUSH    DCKG6_4.00446CB0
005C4D77   .  56            PUSH    ESI
005C4D78   .  50            PUSH    EAX
005C4D79   .  FF15 68104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaHr>;  MSVBVM60.__vbaHresultCheckObj
005C4D7F   >  8B4D E0       MOV     ECX, DWORD PTR SS:[EBP-20]-----輸入的假碼入ECX!ECX的值是:98765432
005C4D82   .  51            PUSH    ECX----------------------------假碼入棧!
005C4D83   .  FF15 AC114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaR8>;  MSVBVM60.__vbaR8Str
005C4D89   .  8B55 E4       MOV     EDX, DWORD PTR SS:[EBP-1C]------機器碼送入EDX!EDX的值是:6856035
005C4D8C   .  DD9D 34FFFFFF FSTP    QWORD PTR SS:[EBP-CC]-----------儲存實數!這裡是:我們輸入的假碼!
005C4D92   .  52            PUSH    EDX-----------------------------這裡是機器碼入棧!
005C4D93   .  FF15 AC114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaR8>;  MSVBVM60.__vbaR8Str---此CALL是對機器碼轉換!我沒有具體
-----------------------------------------------去跟, 有興趣自己跟一下吧!
005C4D99   .  DC05 784A4000 FADD    QWORD PTR DS:[404A78]-----------ST=6856035.0000000000000;DS存放的是常數:19730131.000000
------------------------00。ST=ST+常數=6856035.0000000000000+19730131.00000000=26586166.000000000000
005C4D9F   .  833D 00106600>CMP     DWORD PTR DS:[661000], 0--------DS:[661000]為0,所以這裡不會跳!
005C4DA6   .  75 08         JNZ     SHORT DCKG6_4.005C4DB0-----不相等就跳!
005C4DA8   .  DC35 704A4000 FDIV    QWORD PTR DS:[404A70]-----------ST=26586166.000000000000;DS:[404A70]存放的是常數:1.973
-------------------013100000000。ST=ST/常數=26586166.000000000000/1.973013100000000=13474905.969960360960
005C4DAE   .  EB 11         JMP     SHORT DCKG6_4.005C4DC1
005C4DB0   >  FF35 744A4000 PUSH    DWORD PTR DS:[404A74]
005C4DB6   .  FF35 704A4000 PUSH    DWORD PTR DS:[404A70]
005C4DBC   .  E8 D320E4FF   CALL    <JMP.&MSVBVM60._adj_fdiv_m64>----此CALL保留上述運算所得的整數位,不用四捨五入:13474905.
-----------------------------------000000000000,13474905就是我們要找的註冊碼!
005C4DC1   >  DFE0          FSTSW   AX
005C4DC3   .  A8 0D         TEST    AL, 0D
005C4DC5   .  0F85 CB020000 JNZ     DCKG6_4.005C5096
005C4DCB   .  FF15 54124000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFP>;  MSVBVM60.__vbaFPInt
005C4DD1   .  FF15 E0104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFp>;  MSVBVM60.__vbaFpR8
005C4DD7   .  DC9D 34FFFFFF FCOMP   QWORD PTR SS:[EBP-CC]---比較浮點數值:ST=13474905.000000000000;SS:[EBP-CC]=98765432.000
------------------------------00000
005C4DDD   .  DFE0          FSTSW   AX
005C4DDF   .  F6C4 40       TEST    AH, 40
005C4DE2   .  75 07         JNZ     SHORT DCKG6_4.005C4DEB----不相等就跳!去見上帝吧!玩完啦!
005C4DE4   .  B8 01000000   MOV     EAX, 1--------------------賦成功標誌位:1
005C4DE9   .  EB 02         JMP     SHORT DCKG6_4.005C4DED
005C4DEB   >  33C0          XOR     EAX, EAX
3、好了,現在可以進行演算法總結了!演算法超級簡單:設註冊碼為A,機器碼為B,用到兩個常數:19730131和1.973013100000000
  A=(B+19730131)/1.973013100000000取結果的整數位,不用四捨五入!我的註冊碼是:
 A=(6856035+19730131)/1.973013100000000=13474905.969960360960,取整數位就是:13474905,輸入註冊成功!
  另我做了它的破解動畫,因為比較大,不能上傳,有需要可以與我聯絡!


相關文章