西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

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

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

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2011/7/30 16:47:10字體大小:A-A+

作者:西西點擊:2271次評論:0次標(biāo)簽: 注冊機

  • 類型:社交聊天大。4.6M語言:中文 評分:10.0
  • 標(biāo)簽:
立即下載

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

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



下載Keymaker:http://innovatechautomation.com/soft/8512.html

   通過動態(tài)調(diào)試或反匯編例子程序可以得到以下注冊碼的計算過程:

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可以看到數(shù)據(jù)窗口中顯示為“%1X”
xxxx:00401137 PUSH DWORD 0040305C
xxxx:0040113C CALL wsprintfA

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

  這是寫好的聲明:

a1 dd 0; 這是一個雙字的內(nèi)存空間,對應(yīng)于上面的403058。
;(因為40109D處的指令是DWORD 403058,所以用dd,如果是WORD就用dw,如果是BYTE就用db)
a2 dd 0; 對應(yīng)于上面的40306C
a3 db "%1X",0; 對應(yīng)于上面的40303E指向的字符串
a4 db 20 dup (0); 這是20個字節(jié)的內(nèi)存空間,用來存放輸出的注冊碼,對應(yīng)于上面的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; 當(dāng)然這幾條語句也可以直接寫成
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寄存器所指向的內(nèi)存地址的數(shù)據(jù)。

  輸入如下圖所示:

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

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

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

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

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

MOV ECX,EAX; EAX指向用戶輸入的八位序列號,現(xiàn)在暫將它移動到ECX寄存器
XOR EBX,EBX; 以下是一段典型的將內(nèi)存中的ASCII碼轉(zhuǎn)換為十六進制代碼。
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:; 我想以上的一段代碼應(yīng)該懂匯編就能寫的出(如果不是很明白,那么你對我編寫好的注冊機用TRW調(diào)試一次就知道了)。
PUSH EBX; 最后的十六進制結(jié)果都保存在寄存器EBX中
; 將EBX入棧,這是為了將EBX寄存器的數(shù)據(jù)保存起來。因為經(jīng)過CPUID這個指令后EBX的值將被修改。然后后面就和上面一樣照抄程序中的指令。以下計算注冊碼的方法很簡短。但在實際的破解過程中,程序的算法可能會相當(dāng)復(fù)雜。這就需要你通過調(diào)試或反匯編將關(guān)鍵的運算指令都找出來,再寫進來。
MOV EAX,1 
CPUID 
POP ECX; 恢復(fù)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寄存器所指向的內(nèi)存地址的數(shù)據(jù)。

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

  

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

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

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

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

  

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

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

  這是完成界面。

    相關(guān)評論

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

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

    熱門評論

    最新評論

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

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)