機械設計系統1.0破解實錄------------演算法簡單,破解過程一

看雪資料發表於2015-11-15

機械設計系統1.0破解實錄------------演算法簡單,破解過程一波三折,保護方式比較有意思!!


[軟體介紹]

 本軟體主要面向機械工程設計者使用,主要功能有如下幾個方面:
1、公差類:孔、軸、形位公差查詢;尺寸中等級與粗糙度的合理選配;未注尺寸自由偏差及平板的平面度與平行度公差。
2、材料類:材料密度查詢;有17型別材的規格及相應密度、重量計算;材料大類所屬各牌號的特性;各種材料配合時的摩擦係數及運動機構的傳動效率等。
3、標件類:各種聯接件(螺栓、螺母、螺釘、墊圈、擋圈、銷、螺柱、鉚釘、鍵、密封圈等)按名稱或按型號方便查詢及其各種規格下的各種尺寸以圖示的方式一目瞭然,再輔助以相應的幫助文件;普通螺紋、梯形螺紋、非螺紋密封的管螺紋、螺紋密封的管螺紋、英制螺紋的規格尺寸。
3、傳動類:齒輪設計計算;蝸輪蝸桿設計計算;鏈輪設計計算;傳動軸強度計算;彈簧設計計算;滑動螺旋設計計算,並含有相應的校核。只輸入現有的一些已知資料就能自動計算得出準確結果,可大大減輕人的腦力勞動,省得去翻閱設計手冊,節省大量時間,加快設計速度,提高產品設計開發的成功率。
4、軸承類:各種規格軸承的查詢、受力下校核及潤滑。
5、聯接件、銷、鍵在不同方式下的安全校核。
6、工程計算器(全權共享):可在不進入主介面情形下選用工程計算器進行各種材料、各種形狀下計算體積重量,方便快捷。
7、輔助類:生產、供應、銷售、人事下相應事務的管理及查詢。
8、人性化的介面可自行設定,更改。


[使用限制]  試用20次。

[保護方式]  採用硬體序列號,一機註冊碼
[下載]http://www1.skycn.com/soft/21365.html

[破解工具]   olldbg1.10 、Peid0.92、c32asm1.0002

破解過程:

1.該軟體用VC編寫,無殼。

2.用C32ASM載入後可得到如下字串參考資訊

註冊成功
  ::00458354->PUSH 50D790
註冊成功第一步
  ::00458249->PUSH 50D7C0
註冊碼:
  ::00444E55->PUSH 50A564
註冊失敗
  ::00458266->PUSH 50D7B4
註冊使用者
  ::00444E74->PUSH 50A550


用olldbg載入後,按 ctrl+G  00458354 來到:

00458354   . 68 90D75000    PUSH 機械設計.0050D790
00458359   . E8 0237FBFF    CALL 機械設計.0040BA60
0045835E   . 51             PUSH ECX
0045835F   . 8BCC           MOV ECX,ESP
00458361   . 896424 18      MOV DWORD PTR SS:[ESP+18],ESP
00458365   . 68 6C255000    PUSH 機械設計.0050256C
0045836A   . C64424 38 05   MOV BYTE PTR SS:[ESP+38],5
0045836F   . E8 EC36FBFF    CALL 機械設計.0040BA60
00458374   . 8BCE           MOV ECX,ESI
00458376   . C64424 34 04   MOV BYTE PTR SS:[ESP+34],4
0045837B   . E8 90FBFFFF    CALL 機械設計.00457F10
00458380   . 833D 30B95400 >CMP DWORD PTR DS:[54B930],13
00458387   . 7E 4C          JLE SHORT 機械設計.004583D5

再向上看,來到這裡:


0045822E   . E8 44790700    CALL 機械設計.004CFB77
00458233   . 8B4E 70        MOV ECX,DWORD PTR DS:[ESI+70]  ;機器碼(十六進位制)送ECX
00458236   . 8B46 74        MOV EAX,DWORD PTR DS:[ESI+74]  ;我們輸入註冊碼(十六進位制)送EAX
00458239   . 35 B7D64C1A    XOR EAX,1A4CD6B7            ;EAX 與 1A4CD6B7異或。
0045823E   . 51             PUSH ECX
0045823F   . 3BC1           CMP EAX,ECX           ;比較註冊碼
00458241   . 8BCC           MOV ECX,ESP
00458243   . 75 1D          JNZ SHORT 機械設計.00458262



所以   註冊碼=機器碼 XOR 1A4CD6B7    ( A4CD6B7= 441243319)

我的機器碼為 :2867163251  ,註冊碼就是:2867163251 xor 441243319=2963908292


2.填入正確註冊碼後,程式依然沒有現示已註冊。
再進行跟蹤發現在004582B6處call中用 CreateFileA ,試圖對自身進行寫訪問。
如果訪問成功,在0045833F處call程式會把輸入註冊碼寫到程式尾部十個位元組處,
 然而正常情況下這是不可能的。
看來這就是沒有現示已註冊原因。
 
3.用把註冊碼:2963908292寫到"機械設計系統1.0.exe"尾部,再執行程式
  提示註冊的對話方塊沒有了,出現了登陸對話方塊。新的問題有出現了,
  使用者許可權有"管理員級 ,一般使用者,高階使用者"三種,無論選那一級使用者都登不進取,
  看來還要拿到資料庫中使用者密碼才行。

4. 用ACCESS2003開啟軟體目錄PYF下的SF.mdb,發現加了密.
 我用破解ACCESS密碼軟體:CHKenTools.exe 得到其密碼為:622127FEI
下面再用ACCESS2003開啟SF.mdb 找到"登入使用者"表得到如下資訊: 
-------------------------------------------------------------------------------
Alias          Password          Authority              UserName
Administer  EPAPFDGGDBFVBKFMGW  管理員級              潘應鋒
PanYF          BWALIWJLDKJMFFAKDVGK  一般使用者              潘
你我她          CPHYINJLFVDGIZ          高階使用者              飛客
FEI          7                   /                       /
--------------------------------------------------------------------------------

我大喜,可我用裡面Password依然登入不進取,看來程式把密碼加密再儲存到資料庫中.
革命尚未成功啊!鬱悶............。

5.在用C32ASM中檢視字串,可看到大量SQL語句: 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\PYF\SF.mdb;Jet OLEDB:DataBase Password=622127FEI
  ::004519C1->PUSH 50C350
                      (資料庫密碼在這裡也可看到!!,我以後看密碼先搜尋這條語句) 


select * from 登入使用者 where Alias='Administer' and Password='
  ::00443911->PUSH 50A278
select * from 登入使用者 where Alias='
  ::00443DDF->PUSH 50A33C
  ::0044415D->PUSH 50A33C
  ::00445763->PUSH 50A33C
  ::00445E57->PUSH 50A33C
  ::004461CB->PUSH 50A33C
  ::00446569->PUSH 50A33C
  ::0044705D->PUSH 50A33C
  ::00447DD7->PUSH 50A33C
select * from 登入使用者 where Authority='
  ::00445F36->PUSH 50A728

    'AND Password=' 應該與密碼有關,但太多處呼叫,一一設斷跟蹤太繁。

  下面對GetWindowTextA函式設斷來跟,

用OLLYDBG載入程式後, ALT+E選擇到USER32.dll模組,按右鍵,
選擇“Search for ->Name (label)” 出現呼叫函式的視窗,
向下拉動找到GetWindowTextA並選擇它,按下F2。
按F9執行,回到主程式,添入註冊名和註冊碼註冊,被OllyDbg攔截住,
按CTRL+F9,再按F8返回程式領空後來到如下位置:
  
004DAE30  |> 50             PUSH EAX                                 ; |Buffer
004DAE31  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
004DAE34  |. FF15 44155000  CALL DWORD PTR DS:[<&USER32.GetWindowTex>; \GetWindowTextA
004DAE3A  |. 8B4D 10        MOV ECX,DWORD PTR SS:[EBP+10]
004DAE3D  |. 6A FF          PUSH -1

跳出上面那段程式碼後來到:

00443590   . 53             PUSH EBX
00443591   . 56             PUSH ESI
00443592   . 57             PUSH EDI
00443593   . 8B7C24 10      MOV EDI,DWORD PTR SS:[ESP+10]
00443597   . 8BF1           MOV ESI,ECX
00443599   . 8D46 74        LEA EAX,DWORD PTR DS:[ESI+74]
0044359C   . 50             PUSH EAX                  ; /Arg3
0044359D   . 68 ED030000    PUSH 3ED                  ; |Arg2 = 000003ED
004435A2   . 57             PUSH EDI                   ; |Arg1
004435A3   . E8 35780900    CALL 機械設計.004DADDD      ; \機械設計.004DADDD
                                           ;獲取使用者名稱的CALL
004435A8   . 8D5E 78        LEA EBX,DWORD PTR DS:[ESI+78]
004435AB   . 53             PUSH EBX                 ; /Arg3
004435AC   . 68 13040000    PUSH 413                  ; |Arg2 = 00000413
004435B1   . 57             PUSH EDI                  ; |Arg1
004435B2   . E8 D4770900    CALL 機械設計.004DAD8B    ; \機械設計.004DAD8B
                                           ;獲取使用者密碼的CALL 
004435B7   . 6A 0A          PUSH 0A
004435B9   . 53             PUSH EBX
004435BA   . 57             PUSH EDI
004435BB   . E8 F1760900    CALL 機械設計.004DACB1
004435C0   . 8D8E 80000000  LEA ECX,DWORD PTR DS:[ESI+80]
004435C6   . 51             PUSH ECX                                 ; /Arg3
004435C7   . 68 ED030000    PUSH 3ED                                 ; |Arg2 = 000003ED
004435CC   . 57             PUSH EDI                                 ; |Arg1
004435CD   . E8 21750900    CALL 機械設計.004DAAF3                       ; \機械設計.004DAAF3
004435D2   . 8D96 D0000000  LEA EDX,DWORD PTR DS:[ESI+D0]
004435D8   . 52             PUSH EDX                                 ; /Arg3
004435D9   . 68 12040000    PUSH 412                                 ; |Arg2 = 00000412
004435DE   . 57             PUSH EDI                                 ; |Arg1
004435DF   . E8 0F750900    CALL 機械設計.004DAAF3                       ; \機械設計.004DAAF3
004435E4   . 81C6 28010000  ADD ESI,128
004435EA   . 56             PUSH ESI                                 ; /Arg3
004435EB   . 68 FA030000    PUSH 3FA                                 ; |Arg2 = 000003FA
004435F0   . 57             PUSH EDI                                 ; |Arg1
004435F1   . E8 FD740900    CALL 機械設計.004DAAF3                       ; \機械設計.004DAAF3
004435F6   . 5F             POP EDI
004435F7   . 5E             POP ESI
004435F8   . 5B             POP EBX



繼續更來到如下位置可見到生成查詢資料庫的SQL語句:

0044415D   . 68 3CA35000    PUSH 機械設計.0050A33C
00444162   . 50             PUSH EAX
00444163   . E8 9862FCFF    CALL 機械設計.0040A400
00444168   . 68 2CA35000    PUSH 機械設計.0050A32C                       ;  ASCII "'AND Password='"
0044416D   . 50             PUSH EAX
0044416E   . 8D4C24 2C      LEA ECX,DWORD PTR SS:[ESP+2C]
00444172   . 51             PUSH ECX
00444173   . C74424 44 0100>MOV DWORD PTR SS:[ESP+44],1
0044417B   . E8 1000FCFF    CALL 機械設計.00404190      ; 連線字串(AND Password=)生成SQL查詢語句
00444180   . 57             PUSH EDI
00444181   . 50             PUSH EAX
00444182   . 8D5424 34      LEA EDX,DWORD PTR SS:[ESP+34]
00444186   . 52             PUSH EDX
00444187   . C64424 50 02   MOV BYTE PTR SS:[ESP+50],2
0044418C   . E8 4FFFFBFF    CALL 機械設計.004040E0         ;  連線生成SQL查詢語句
00444191   . 68 B02C5000    PUSH 機械設計.00502CB0
00444196   . 50             PUSH EAX
00444197   . 8D4424 3C      LEA EAX,DWORD PTR SS:[ESP+3C]
0044419B   . 50             PUSH EAX
0044419C   . C64424 5C 03   MOV BYTE PTR SS:[ESP+5C],3
004441A1   . E8 EAFFFBFF    CALL 機械設計.00404190         ; 連線生成SQL查詢語句 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
(跟進0040190)
004041F9   . 8D4424 30      LEA EAX,DWORD PTR SS:[ESP+30]
004041FD   . 50             PUSH EAX
004041FE   . E8 FDFBFFFF    CALL 機械設計.00403E00        ;  連線生成SQL語句的call
00404203   . 8B7424 34      MOV ESI,DWORD PTR SS:[ESP+34] ;[ESP+34]為生成的sql語句地址
           

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
0044425B   . 8907           MOV DWORD PTR DS:[EDI],EAX       ;  EAX中為查詢密碼sql語句地址
0044425D   . E8 FED10000    CALL 機械設計.00451460
00444262   . A1 ECB75400    MOV EAX,DWORD PTR DS:[54B7EC]
00444267   . 83C4 04        ADD ESP,4
0044426A   . 85C0           TEST EAX,EAX
0044426C   . 75 0F          JNZ SHORT 機械設計.0044427D
0044426E   . 68 03400080    PUSH 80004003
00444273   . E8 68740800    CALL 機械設計.004CB6E0
00444278   . A1 ECB75400    MOV EAX,DWORD PTR DS:[54B7EC]
0044427D   > 8B08           MOV ECX,DWORD PTR DS:[EAX]
0044427F   . 8D5424 10      LEA EDX,DWORD PTR SS:[ESP+10]
00444283   . 52             PUSH EDX
00444284   . 50             PUSH EAX
00444285   . 8BF8           MOV EDI,EAX
00444287   . C74424 18 0000>MOV DWORD PTR SS:[ESP+18],0
0044428F   . FF51 50        CALL DWORD PTR DS:[ECX+50]       ;  呼叫msADO15.dll
00444292   . 85C0           TEST EAX,EAX
00444294   . 7D 0C          JGE SHORT 機械設計.004442A2
00444296   . 68 B01C5000    PUSH 機械設計.00501CB0
0044429B   . 57             PUSH EDI
0044429C   . 50             PUSH EAX
0044429D   . E8 4E740800    CALL 機械設計.004CB6F0
004442A2   > 66:837C24 10 0>CMP WORD PTR SS:[ESP+10],0       ;  判斷是否登入成功
004442A8   . 0F84 36010000  JE 機械設計.004443E4
004442AE   . 8B8E 7C010000  MOV ECX,DWORD PTR DS:[ESI+17C]
004442B4   . 83F9 02        CMP ECX,2                       ;  比較登入次數
004442B7   . 0F8D 9B000000  JGE 機械設計.00444358

下面為我輸入 1 後在OD中看到的:

01FBA290  73 65 6C 65 63 74 20 2A 20 66 72 6F 6D 20 B5 C7  select * from 登
01FBA2A0  C2 BC D3 C3 BB A7 20 77 68 65 72 65 20 41 6C 69  錄使用者 where Ali
01FBA2B0  61 73 3D 27 41 64 6D 69 6E 69 73 74 65 72 27 41  as='Administer'A
01FBA2C0  4E 44 20 50 61 73 73 77 6F 72 64 3D 27 42 58 27  ND Password='BX'

很明顯:    1   對應密碼為  BX .

我們只需把資料庫中的使用者密碼改為BX,輸入密碼1就可成功登陸.


6.
   下面再回過頭來看看其是如何加密使用者密碼的: 

0044E660   $ 6A FF          PUSH -1
0044E662   . 68 C8754F00    PUSH 機械設計.004F75C8               ;  SE handler installation
0044E667   . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0044E66D   . 50             PUSH EAX
0044E66E   . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
0044E675   . 83EC 1C        SUB ESP,1C
0044E678   . 53             PUSH EBX
0044E679   . 55             PUSH EBP
0044E67A   . 56             PUSH ESI
0044E67B   . 33F6           XOR ESI,ESI
0044E67D   . 57             PUSH EDI
0044E67E   . 897424 28      MOV DWORD PTR SS:[ESP+28],ESI
0044E682   . 897424 34      MOV DWORD PTR SS:[ESP+34],ESI
0044E686   . E8 884D0800    CALL 機械設計.004D3413
0044E68B   . 8B10           MOV EDX,DWORD PTR DS:[EAX]
0044E68D   . 8BC8           MOV ECX,EAX
0044E68F   . FF52 0C        CALL DWORD PTR DS:[EDX+C]
0044E692   . 83C0 10        ADD EAX,10
0044E695   . 894424 14      MOV DWORD PTR SS:[ESP+14],EAX
0044E699   . C64424 34 01   MOV BYTE PTR SS:[ESP+34],1
0044E69E   . E8 704D0800    CALL 機械設計.004D3413
0044E6A3   . 8B10           MOV EDX,DWORD PTR DS:[EAX]
0044E6A5   . 8BC8           MOV ECX,EAX
0044E6A7   . FF52 0C        CALL DWORD PTR DS:[EDX+C]
0044E6AA   . 8D58 10        LEA EBX,DWORD PTR DS:[EAX+10]
0044E6AD   . 895C24 18      MOV DWORD PTR SS:[ESP+18],EBX
0044E6B1   . 8D4424 40      LEA EAX,DWORD PTR SS:[ESP+40]
0044E6B5   . 50             PUSH EAX
0044E6B6   . 8D4C24 18      LEA ECX,DWORD PTR SS:[ESP+18]
0044E6BA   . C64424 38 02   MOV BYTE PTR SS:[ESP+38],2
0044E6BF   . E8 4C59FBFF    CALL 機械設計.00404010
0044E6C4   . 8B4424 40      MOV EAX,DWORD PTR SS:[ESP+40]        ;  [ESP+40]]為輸入密碼地址
0044E6C8   . 3970 F4        CMP DWORD PTR DS:[EAX-C],ESI
0044E6CB   . 8B6C24 14      MOV EBP,DWORD PTR SS:[ESP+14]        ;  [ESP+14]為輸入密碼地址
0044E6CF   . 7E 5A          JLE SHORT 機械設計.0044E72B
                                                                  ;  迴圈開始
0044E6D1   > 8A0C06         MOV CL,BYTE PTR DS:[ESI+EAX]         ;  依次取輸入密碼每一位ASCII碼送CL
0044E6D4   . 8B7D F4        MOV EDI,DWORD PTR SS:[EBP-C]         ;  [EBP-C]中為輸入密碼長度
0044E6D7   . 884C24 13      MOV BYTE PTR SS:[ESP+13],CL          ;  密碼ASCII碼送[ESP+13]
0044E6DB   . 837D FC 01     CMP DWORD PTR SS:[EBP-4],1
0044E6DF   . 7E 14          JLE SHORT 機械設計.0044E6F5
0044E6E1   . 8BD7           MOV EDX,EDI
0044E6E3   . 52             PUSH EDX
0044E6E4   . 8D4C24 18      LEA ECX,DWORD PTR SS:[ESP+18]
0044E6E8   . E8 A330FBFF    CALL 機械設計.00401790
0044E6ED   . 8B6C24 14      MOV EBP,DWORD PTR SS:[ESP+14]        ;  輸入密碼地址送EBP
0044E6F1   . 8B4424 40      MOV EAX,DWORD PTR SS:[ESP+40]        ;  輸入密碼地址送EAX
0044E6F5   > 8A4C24 45      MOV CL,BYTE PTR SS:[ESP+45]          ;  取變數[ESP+44]記憶體中第二位元組(即十六進位制值高8位)
0044E6F9   . 324C24 13      XOR CL,BYTE PTR SS:[ESP+13]          ;  CL 異或  每位密碼ASCII碼
0044E6FD   . 880C2E         MOV BYTE PTR DS:[ESI+EBP],CL         ;  用異或值代替原密碼
0044E700   . 8B4C24 44      MOV ECX,DWORD PTR SS:[ESP+44]
0044E704   . 897D F4        MOV DWORD PTR SS:[EBP-C],EDI         ;  密碼長度送[EBP-C]
0044E707   . C6042F 00      MOV BYTE PTR DS:[EDI+EBP],0
0044E70B   . 66:0FB6142E    MOVZX DX,BYTE PTR DS:[ESI+EBP]       ;  依次取輸入密碼每一位ASCII碼送DX
0044E710   . 03D1           ADD EDX,ECX
0044E712   . 69D2 93310000  IMUL EDX,EDX,3193                    ;   EDX=EDX*3193
0044E718   . B9 BF580000    MOV ECX,58BF                         ;  ECX=58BF
0044E71D   . 2BCA           SUB ECX,EDX                          ;  ECX=ECX-EDX
0044E71F   . 894C24 44      MOV DWORD PTR SS:[ESP+44],ECX        ;  ECX送變數[ESP+44]
0044E723   . 8B48 F4        MOV ECX,DWORD PTR DS:[EAX-C]         ;  輸入密碼長度送ECX
0044E726   . 46             INC ESI                              ;  計數器加1
0044E727   . 3BF1           CMP ESI,ECX                          ;  比較迴圈次數
0044E729   .^7C A6          JL SHORT 機械設計.0044E6D1
 
..........................................

........................................(略)
.........................................

下面程式把密碼位一個字元轉換為兩個字元.
0044E7C8   . 85C9           TEST ECX,ECX
0044E7CA   . C74424 20 0000>MOV DWORD PTR SS:[ESP+20],0
0044E7D2   . 0F8E 15010000  JLE 機械設計.0044E8ED
0044E7D8   . EB 06          JMP SHORT 機械設計.0044E7E0
0044E7DA   > 8B4424 40      MOV EAX,DWORD PTR SS:[ESP+40]        ;  迴圈開始
0044E7DE   . 8BFF           MOV EDI,EDI
0044E7E0   > 8B4C24 20      MOV ECX,DWORD PTR SS:[ESP+20]
0044E7E4   . 0FB63C01       MOVZX EDI,BYTE PTR DS:[ECX+EAX]      ;  依次前面經過轉換後密碼每一位ASCII碼送CL
0044E7E8   . B8 B8BA5000    MOV EAX,機械設計.0050BAB8            ;  ASCII "12"
0044E7ED   . 8D50 01        LEA EDX,DWORD PTR DS:[EAX+1]
0044E7F0   > 8A08           MOV CL,BYTE PTR DS:[EAX]
0044E7F2   . 40             INC EAX
0044E7F3   . 84C9           TEST CL,CL
0044E7F5   .^75 F9          JNZ SHORT 機械設計.0044E7F0
0044E7F7   . 2BC2           SUB EAX,EDX
0044E7F9   . 50             PUSH EAX
0044E7FA   . 68 B8BA5000    PUSH 機械設計.0050BAB8               ;  ASCII "12"
0044E7FF   . 8D4C24 20      LEA ECX,DWORD PTR SS:[ESP+20]
0044E803   . E8 7854FBFF    CALL 機械設計.00403C80
0044E808   . 8B5C24 18      MOV EBX,DWORD PTR SS:[ESP+18]
0044E80C   . 837B FC 01     CMP DWORD PTR DS:[EBX-4],1
0044E810   . 8B73 F4        MOV ESI,DWORD PTR DS:[EBX-C]
0044E813   . 7E 10          JLE SHORT 機械設計.0044E825
0044E815   . 8BD6           MOV EDX,ESI
0044E817   . 52             PUSH EDX
0044E818   . 8D4C24 1C      LEA ECX,DWORD PTR SS:[ESP+1C]
0044E81C   . E8 6F2FFBFF    CALL 機械設計.00401790
0044E821   . 8B5C24 18      MOV EBX,DWORD PTR SS:[ESP+18]
0044E825   > 8BC7           MOV EAX,EDI                          ;  密碼位ASCII碼送EAX
0044E827   . 99             CDQ
0044E828   . B9 1A000000    MOV ECX,1A
0044E82D   . F7F9           IDIV ECX                             ;  與1A相除
0044E82F   . 04 41          ADD AL,41                            ;  加41
0044E831   . 8803           MOV BYTE PTR DS:[EBX],AL             ;  儲存結果字元1
0044E833   . 8973 F4        MOV DWORD PTR DS:[EBX-C],ESI
0044E836   . C6041E 00      MOV BYTE PTR DS:[ESI+EBX],0
0044E83A   . 837B FC 01     CMP DWORD PTR DS:[EBX-4],1
0044E83E   . 8B73 F4        MOV ESI,DWORD PTR DS:[EBX-C]
0044E841   . 895424 24      MOV DWORD PTR SS:[ESP+24],EDX
0044E845   . 7E 14          JLE SHORT 機械設計.0044E85B
0044E847   . 8BD6           MOV EDX,ESI
0044E849   . 52             PUSH EDX
0044E84A   . 8D4C24 1C      LEA ECX,DWORD PTR SS:[ESP+1C]
0044E84E   . E8 3D2FFBFF    CALL 機械設計.00401790
0044E853   . 8B5C24 18      MOV EBX,DWORD PTR SS:[ESP+18]
0044E857   . 8B5424 24      MOV EDX,DWORD PTR SS:[ESP+24]
0044E85B   > 80C2 41        ADD DL,41                            ;  上面相除餘數加41
0044E85E   . 8853 01        MOV BYTE PTR DS:[EBX+1],DL           ;  儲存結果到字元2
0044E861   . 8973 F4        MOV DWORD PTR DS:[EBX-C],ESI
0044E864   . C6041E 00      MOV BYTE PTR DS:[ESI+EBX],0
0044E868   . 8B53 F4        MOV EDX,DWORD PTR DS:[EBX-C]
0044E86B   . 8B7D F4        MOV EDI,DWORD PTR SS:[EBP-C]
0044E86E   . 8D0417         LEA EAX,DWORD PTR DS:[EDI+EDX]
0044E871   . 894424 1C      MOV DWORD PTR SS:[ESP+1C],EAX
0044E875   . 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
0044E878   . B9 01000000    MOV ECX,1
0044E87D   . 2BC8           SUB ECX,EAX
0044E87F   . 8B45 F8        MOV EAX,DWORD PTR SS:[EBP-8]
0044E882   . 2B4424 1C      SUB EAX,DWORD PTR SS:[ESP+1C]
0044E886   . 8BF3           MOV ESI,EBX
0044E888   . 2BF5           SUB ESI,EBP
0044E88A   . 0BC1           OR EAX,ECX
0044E88C   . 895424 28      MOV DWORD PTR SS:[ESP+28],EDX
0044E890   . 895C24 24      MOV DWORD PTR SS:[ESP+24],EBX
0044E894   . 7D 16          JGE SHORT 機械設計.0044E8AC
0044E896   . 8B4C24 1C      MOV ECX,DWORD PTR SS:[ESP+1C]
0044E89A   . 51             PUSH ECX
0044E89B   . 8D4C24 18      LEA ECX,DWORD PTR SS:[ESP+18]
0044E89F   . E8 CC38FBFF    CALL 機械設計.00402170
0044E8A4   . 8B6C24 14      MOV EBP,DWORD PTR SS:[ESP+14]
0044E8A8   . 8B5424 28      MOV EDX,DWORD PTR SS:[ESP+28]
0044E8AC   > 3BF7           CMP ESI,EDI
0044E8AE   . 77 06          JA SHORT 機械設計.0044E8B6
0044E8B0   . 03F5           ADD ESI,EBP
0044E8B2   . 897424 24      MOV DWORD PTR SS:[ESP+24],ESI
0044E8B6   > 8B7424 24      MOV ESI,DWORD PTR SS:[ESP+24]
0044E8BA   . 8B4424 1C      MOV EAX,DWORD PTR SS:[ESP+1C]
0044E8BE   . 8BCA           MOV ECX,EDX
0044E8C0   . C1E9 02        SHR ECX,2
0044E8C3   . 03FD           ADD EDI,EBP
0044E8C5   . F3:A5          REP MOVS DWORD PTR ES:[EDI],DWORD PT>
0044E8C7   . 8BCA           MOV ECX,EDX
0044E8C9   . 83E1 03        AND ECX,3
0044E8CC   . F3:A4          REP MOVS BYTE PTR ES:[EDI],BYTE PTR >
0044E8CE   . 8B4C24 40      MOV ECX,DWORD PTR SS:[ESP+40]
0044E8D2   . 8945 F4        MOV DWORD PTR SS:[EBP-C],EAX
0044E8D5   . C60428 00      MOV BYTE PTR DS:[EAX+EBP],0
0044E8D9   . 8B4424 20      MOV EAX,DWORD PTR SS:[ESP+20]
0044E8DD   . 8B51 F4        MOV EDX,DWORD PTR DS:[ECX-C]
0044E8E0   . 40             INC EAX
0044E8E1   . 3BC2           CMP EAX,EDX                          ;  比較迴圈次數
0044E8E3   . 894424 20      MOV DWORD PTR SS:[ESP+20],EAX
0044E8E7   .^0F8C EDFEFFFF  JL 機械設計.0044E7DA


7.登入時發現輸入正確管理員密碼後,登入介面“管理員”灰色按被啟用,
  點選後彈出一個介面可以完成如下功能:
   
   新增使用者 。。。。。。。。。。。
   刪除使用者
   解密使用者 ......................(可以得到其它使用者密碼)
   解金鑰   ......................(機器碼)
   解密機使用者碼......................(可以生成註冊碼,序號產生器都不用寫啦!!!!)


我用解密使用者得到:
                Administer  密碼 EPAPFDGGDBFVBKFMGW 對應明文密碼  wtflfoFEI

 用上面軟體提供註冊供能還是不能註冊(軟體有bug).
                              
8.
  對 READFILE 函式設斷可看到程式啟動時時如何判斷是否註冊的: 



00451CD0   . 6A 0A          PUSH 0A                                  ; /Arg2 = 0000000A
00451CD2   . 8D4D 80        LEA ECX,DWORD PTR SS:[EBP-80]            ; |
00451CD5   . 51             PUSH ECX                                 ; |Arg1
00451CD6   . 8D4D D0        LEA ECX,DWORD PTR SS:[EBP-30]            ; |
00451CD9   . E8 811C0800    CALL 機械設計.004D395FSS:[         ; \機械設計.004D395F395F

                                                          ;該CALL讀取檔案尾部儲存註冊碼
00451CDE   . 8D4D D0        LEA ECX,DWORD PTR SS:[EBP-30]
00451CE1   . E8 0A1F0800    CALL 機械設計.004D3BF0SS:[
00451CE6   . 8D55 80        LEA EDX,DWORD PTR SS:[EBP-80]
00451CE9   . 52             PUSH EDX
00451CEA   . E8 5E9D0600    CALL 機械設計.004BBA4D
00451CEF   . 83C4 04        ADD ESP,4
00451CF2   . 6A 0A          PUSH 0A                                  ; /pFileSystemNameSize = 0000000A
00451CF4   . 6A 00          PUSH 0                                   ; |pFileSystemNameBuffer = NULL
00451CF6   . 6A 00          PUSH 0                                   ; |pFileSystemFlags = NULL
00451CF8   . 6A 00          PUSH 0                                   ; |pMaxFilenameLength = NULL
00451CFA   . 8BF8           MOV EDI,EAX                              ; |
00451CFC   . 8D45 E0        LEA EAX,DWORD PTR SS:[EBP-20]            ; |
00451CFF   . 50             PUSH EAX                                 ; |pVolumeSerialNumber
00451D00   . 6A 0C          PUSH 0C                                  ; |MaxVolumeNameSize = C (12.)
00451D02   . 6A 00          PUSH 0                                   ; |VolumeNameBuffer = NULL
00451D04   . 68 4CA55000    PUSH 機械設計.0050A54C= NU                   ; |RootPathName = "c:\"
00451D09   . 81F7 E3E5688F  XOR EDI,8F68E5E3        ;註冊碼與8F68E5E3異或
00451D0F   . FF15 54135000  CALL DWORD PTR DS:[<&KERNEL32.GetVolumeI>; \GetVolumeInformationA
                                                           ;得到C盤序列號
00451D15   . 3B7D E0        CMP EDI,DWORD PTR SS:[EBP-20]  ;比較C盤序列號與上面異或值是否相等
                                                            ;相等就是已註冊
00451D18   . 74 34          JE SHORT 機械設計.00451D4E    ;爆破改這裡
00451D1A   . 6A 00          PUSH 0
00451D1C   . 8D8D 24FDFFFF  LEA ECX,DWORD PTR SS:[EBP-2DC]
00451D22   . C605 A5B55400 >MOV BYTE PTR DS:[54B5A5],0  ;註冊標誌變數[54B5A5]賦0
00451D29   . E8 62630000    CALL 機械設計.004580904B5A
00451D2E   . 8D8D 24FDFFFF  LEA ECX,DWORD PTR SS:[EBP-2DC]
00451D34   . C645 FC 08     MOV BYTE PTR SS:[EBP-4],8
00451D38   . E8 DCCB0700    CALL 機械設計.004CE919BP-4
00451D3D   . 8D8D 24FDFFFF  LEA ECX,DWORD PTR SS:[EBP-2DC]
00451D43   . C645 FC 07     MOV BYTE PTR SS:[EBP-4],7
00451D47   . E8 04610000    CALL 機械設計.00457E50BP-4
00451D4C   . EB 07          JMP SHORT 機械設計.00451D55
00451D4E   > C605 A5B55400 >MOV BYTE PTR DS:[54B5A5],1     ;註冊標誌變數[54B5A5]賦1
00451D55   > 8B4E 1C        MOV ECX,DWORD PTR DS:[ESI+1C]
00451D58   . 6A 03          PUSH 3
00451D5A   . E8 2C0B0800    CALL 機械設計.004D288B
00451D5F   . A0 A5B55400    MOV AL,BYTE PTR DS:[54B5A5]
00451D64   . 84C0           TEST AL,AL
00451D66   . 74 66          JE SHORT 機械設計.00451DCE



總結: 軟體註冊碼就是C盤序列號與8F68E5E3異或值的十進位制數,儲存在檔案最後10個位元組就可成功註冊.
        Administer 密碼  wtflfoFEI

相關文章