• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁編程開發其它知識 → 用Keymaker制作軟件破解注冊機使用教程

    用Keymaker制作軟件破解注冊機使用教程

    相關軟件相關文章發表評論 來源:西西整理時間:2011/7/30 16:47:10字體大?。?em class="fontsize">A-A+

    作者:西西點擊:2271次評論:0次標簽: 注冊機

    • 類型:社交聊天大?。?i>4.6M語言:中文 評分:10.0
    • 標簽:
    立即下載

      這個注冊機編寫器以前一直是我自己為寫注冊機而編寫的,通過它只要略有匯編基礎很快就能寫出一個注冊機。而不需要再過多的了解程序的指令算法。 整個程序體實際上只是我用匯編寫的一個模板。所以大家也可以在其中自定義自己的界面和提示信息??梢杂肰C++或BC++等資源編輯工具自行修改key1.res資源文件,但請不要修改它們對應的ID號。

      點擊此下載例子程序,主要用來舉例說明這個程序的使用(我先假設自己并不太懂Win32匯編)。



    下載Keymaker:http://www.pirinnaturalssoapandspa.com/soft/8512.html

       通過動態調試或反匯編例子程序可以得到以下注冊碼的計算過程:

    xxxx:00401077 CALL GetCommandLineA
    xxxx:0040107C CMP BYTE PTR [EAX],22
    xxxx:0040107F JNZ 401082
    xxxx:00401081 INC EAX
    xxxx:00401082 MOV CX,WORD PTR [EAX]
    xxxx:00401085 MOV WORD PTR [0040306C],CX
    xxxx:0040108C MOV WORD PTR [0040306E],5C
    xxxx:00401095 PUSH 0
    xxxx:00401097 PUSH 0
    xxxx:00401099 PUSH 0
    xxxx:0040109B PUSH 0
    xxxx:0040109D PUSH DWORD 00403058
    xxxx:004010A2 PUSH 0
    xxxx:004010A4 PUSH 0
    xxxx:004010A6 PUSH DWORD 0040306C
    xxxx:004010AB CALL GetVolumeInformationA
    …………    …………
    …………    …………
    xxxx:0040111E MOV EAX,1
    xxxx:00401123 CPUID
    xxxx:00401125 MOV ECX,DWORD PTR [00403058]
    xxxx:0040112B XOR EDX,EDX
    xxxx:0040112D MUL ECX
    xxxx:0040112F ADD EAX,EDX
    xxxx:00401131 PUSH EAX
    xxxx:00401132 PUSH DWORD 0040303E    ; 在這里下D 40303E可以看到數據窗口中顯示為“%1X”
    xxxx:00401137 PUSH DWORD 0040305C
    xxxx:0040113C CALL wsprintfA

      對于以上的指令并不需要過多的了解它在干什么,只要將其中的每個地址改成一個變量地址的聲明,然后再原封不動的抄到注冊機編寫器的代碼窗口中即可。

      這是寫好的聲明:

    a1 dd 0; 這是一個雙字的內存空間,對應于上面的403058。
    ;(因為40109D處的指令是DWORD 403058,所以用dd,如果是WORD就用dw,如果是BYTE就用db)
    a2 dd 0; 對應于上面的40306C
    a3 db "%1X",0; 對應于上面的40303E指向的字符串
    a4 db 20 dup (0); 這是20個字節的內存空間,用來存放輸出的注冊碼,對應于上面的40305C

      輸入如圖所示:

        這是寫好的程序代碼:

    CALL GetCommandLineA CMP BYTE PTR [EAX],22h; 后面加h表示是十六進制
    JNZ n1 
    INC EAX 
    n1: 
    MOV CX,WORD PTR [EAX] 
    MOV WORD PTR a2,CX 
    MOV WORD PTR a2+2,5Ch 
    PUSH 0 
    PUSH 0 
    PUSH 0 
    PUSH 0 
    LEA EAX,a1; 令EAX指向a1
    PUSH EAX 
    PUSH 0 
    PUSH 0 
    LEA EAX,a2 
    PUSH EAX; 令EAX指向a2
    CALL GetVolumeInformationA; 當然這幾條語句也可以直接寫成
    invoke GetVolumeInformationA,addr a2,0,0,addr a1,0,0,0,0
    的形式
    MOV EAX,1 
    CPUID 
    MOV ECX,a1 
    XOR EDX,EDX 
    MUL ECX 
    ADD EAX,EDX 
    PUSH EAX 
    LEA EAX,a3; 令EAX指向a3,也就是指向字符“%1X”。
    PUSH EAX 
    LEA EAX,a4 
    PUSH EAX 
    CALL wsprintfA 
    LEA EAX,a4; 令EAX指向a4。因為程序最后顯示的就是EAX寄存器所指向的內存地址的數據。

      輸入如下圖所示:

      可以看到這與上面的反匯編代碼基本相同。點擊編譯就可以很容易的得到一個注冊機了。

      生成的注冊機如下圖所示(這只是我寫的外觀,你也可以自行修改):

      需要說明的是因為這只是我寫的一個模板,所以我也在程序中使用了幾個變量。
      請不要再重復聲明:hCursorHandle、hInstance、hIcon、hTempEbp、hInput、hMode以免出錯。
      還有就是你一定要在指令結束時令EAX指向正確的注冊碼地址。

      這種算注冊碼的方法不是直接從用戶所輸入的序列號來計算注冊碼的,所以并不適用于所有情況。有時我們可能需要根據用戶所填入的序列號來計算注冊碼??紤]到這種情況所以我在程序初使時令EAX指向第一個編輯框(也就是輸入序列號的窗口)收到用戶輸入的數據,令EBX指向第二個編輯框收到用戶輸入的數據,令ECX指向第三個編輯框收到用戶輸入的數據。你如果要對用戶輸入的序列號或用戶名等信息進行操作,那么可以就對EAX、EBX、ECX進行操作。

      下面的代碼是本例根據用戶所填入的序列號來計算注冊碼的方法:

    MOV ECX,EAX; EAX指向用戶輸入的八位序列號,現在暫將它移動到ECX寄存器
    XOR EBX,EBX; 以下是一段典型的將內存中的ASCII碼轉換為十六進制代碼。
    n1: 
    MOVZX EAX,BYTE PTR [ECX] 
    OR AL,AL 
    JZ n3 
    CMP AL,3Ah 
    JC n2 
    SUB AL,7 
    n2: 
    SUB AL,30h 
    SHL EBX,4 
    ADD EBX,EAX 
    INC ECX 
    JMP n1 
    n3:; 我想以上的一段代碼應該懂匯編就能寫的出(如果不是很明白,那么你對我編寫好的注冊機用TRW調試一次就知道了)。
    PUSH EBX; 最后的十六進制結果都保存在寄存器EBX中
    ; 將EBX入棧,這是為了將EBX寄存器的數據保存起來。因為經過CPUID這個指令后EBX的值將被修改。然后后面就和上面一樣照抄程序中的指令。以下計算注冊碼的方法很簡短。但在實際的破解過程中,程序的算法可能會相當復雜。這就需要你通過調試或反匯編將關鍵的運算指令都找出來,再寫進來。
    MOV EAX,1 
    CPUID 
    POP ECX; 恢復EBX的值到ECX寄存器
    XOR EDX,EDX 
    MUL ECX 
    ADD EAX,EDX 
    PUSH EAX 
    LEA EAX,a3; 令EAX指向a3,也就是指向字符“%1X”。
    PUSH EAX 
    LEA EAX,a4 
    PUSH EAX 
    CALL wsprintfA 
    LEA EAX,a4; 令EAX指向a4。因為程序最后顯示的就是EAX寄存器所指向的內存地址的數據。

    下圖分別是采用方案二和方案三編譯后的窗口界面:

      

      如果你不采用這種方法編寫那么也可以使用程序中的另一個功能“另類注冊機”。它和CrackCode2000一樣,也是通過攔截程序指令并顯示出注冊碼。 我之所以再寫一個是因為以前的CrackCode2000提供的攔截選項非常有限,而且也不對Wide格式(出現在VB程序中用00將ASCII碼分隔開)提供支持,還有一個毛病是在有些程序中會出現莫名的非法操作或無法獲得注冊碼的情況(就好比這個例子程序)。 另外它的界面也太簡陋了,只是一個消息框。所以我用匯編寫了這個另類注冊機非常小巧,它最多可以設置100個斷點(其實可以更多,但好象沒這個必要),以及在每個斷點處中斷多少次,如下圖所示:

      對于以上界面的說明:程序名稱和中斷地址的設置,這個我想用不著多說,會破解的人都懂。 而獲取注冊碼的方式上需要說明一下,我是這樣考慮的:寄存器方式-因為注冊碼可能是會放在寄存器中比較,并且可能經過十進制或十六進制的轉換, 所以就提供了一個寄存器方式及十進制或十六進制的選項。 內存方式-是指:如設置為EDX,即指注冊碼保存在EDX所指向的內存地址中(而不是寄存器里)這樣就為獲取注冊碼提供了更多的選擇。

      可以自定義在彈出的對話框中將顯示的主頁、郵件和窗口標題,如下圖所示:

      生成的注冊機有二個可選界面如下圖所示:

      

      需要說明的一點是這個對話框只在攔截成功的時候出現。

      除此之外還有一個制作破解補丁的附加工具,制作界面如圖所示。

      這是完成界面。

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(0)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>