加密精靈(EncryptGenie)2.2 註冊碼破解及序號產生器制作
==============================================================
作者:maomao
軟體:加密精靈(EncryptGenie)2.2
加密精靈(EncryptGenie)2.2 版是一個非常方便和容易使用的加密檔案的軟體,它使用CES ( Chaos Encryption
Standard )加密演算法加密。
下載:http://www.encryptgenie.com/cn/download/EncryptGenie.exe(632k)
說明:本軟體是一款比較優秀的國產加密軟體,而且只有20元的註冊費,本破解的目的在於對解密技術探討,希望大家能支援國產正版軟體。
工具:Trw2000 v1.23
日期:2001-10-28
==============================================================
下載安裝後未註冊版有兩個功能限制:
1. 未註冊版最多隻可以輸入16個字元長的密碼。註冊版最多可以輸入128個字元長的密碼。
2. 未註冊版軟體在每次啟動時,都顯示一個啟動畫面。註冊版可以移去這個啟動畫面。
破解過程:
用TRW2000載入EncryptGenie,程式執行後,彈出對話方塊,要求註冊。輸入大名maomao,再隨便輸入一些東東作為註冊碼,先不要按“註冊”按鈕。按下CTRL+N,被TRW中斷,在TRW中輸入bpx
getwindowtexta(windows讀取對話方塊中text的函式),按F5回到EncryptGenie,現在按下“註冊”,程式立刻被TRW攔截。在TRW中輸入承bd
*,再輸入pmodule,現在已經來到EncryptGenie的領空:
==============================================================
0177:0040151D CALL EDI
0177:0040151F PUSH BYTE +1E <=====游標停在這一行
0177:00401521 PUSH DWORD 0043EA64
0177:00401526 PUSH DWORD 0415
0177:0040152B PUSH EBX
0177:0040152C CALL ESI
0177:0040152E PUSH EAX
0177:0040152F CALL EDI
0177:00401531 PUSH BYTE +02
0177:00401533 PUSH BYTE +00
0177:00401535 CALL 00418D70
0177:0040153A PUSH BYTE +00
0177:0040153C PUSH DWORD 0043EA64 <=====下D 43EA64可看到輸入的註冊碼
0177:00401541 PUSH DWORD 0043F32C <=====下D 43F32C可看到我的大名'maomao'
0177:00401546 CALL 004288E0 <=====計算註冊碼的call
0177:0040154B ADD ESP,BYTE +14 ┓
0177:0040154E NEG EAX
┃ 如果註冊碼正確,上面的call將返回EAX=0,
0177:00401550 SBB EAX,EAX
┃ 變換後為EAX=1
0177:00401552 INC EAX
┛
0177:00401553 MOV [0043F778],EAX
0177:00401558 JZ NEAR 004015FA <=====執行到這裡,被跳走你就完了
0177:0040155E MOV EDI,0043F32C
0177:00401563 OR ECX,BYTE -01
0177:00401566 XOR EAX,EAX
0177:00401568 REPNE SCASB
==============================================================
在0177:00401546 CALL 004288E0 計算註冊碼的一行上按F9下斷點,再按F5返回EncryptGenie,這時對話方塊中的註冊碼被清空。重新輸入一些數字,按“註冊”按鈕後,TRW中斷在0177:00401546
CALL 004288E0這一行。用F8跟進去:
==============================================================
0177:004288E0 MOV EAX,[ESP+04]
0177:004288E4 SUB ESP,BYTE +28
0177:004288E7 TEST EAX,EAX
0177:004288E9 PUSH EDI
0177:004288EA JZ 00428959
0177:004288EC MOV EDI,[ESP+34]
0177:004288F0 TEST EDI,EDI
0177:004288F2 JZ 00428959
0177:004288F4 LEA ECX,[ESP+04]
0177:004288F8 PUSH ECX
0177:004288F9 PUSH EAX
0177:004288FA CALL 00428970
0177:004288FF ADD ESP,BYTE +08
0177:00428902 TEST EAX,EAX
0177:00428904 JZ 00428953
0177:00428906 PUSH EBX
0177:00428907 PUSH ESI
0177:00428908 LEA ESI,[ESP+0C] <====這裡用D ESI就可看到真正的註冊碼'BmbqpetshwvkzynD'
0177:0042890C MOV EAX,EDI <====這裡用D
EDI可看到輸入的註冊碼'1234567890'
0177:0042890E MOV DL,[EAX] ┓
0177:00428910 MOV BL,[ESI] ┃比較註冊碼的第一位元組
0177:00428912 MOV CL,DL ┃
0177:00428914 CMP DL,BL ┛
0177:00428916 JNZ 00428936 <====不相同就跳走
0177:00428918 TEST CL,CL
0177:0042891A JZ 00428932
0177:0042891C MOV DL,[EAX+01]┓
0177:0042891F MOV BL,[ESI+01]┃比較第二位元組
0177:00428922 MOV CL,DL ┃
0177:00428924 CMP DL,BL ┛
0177:00428926 JNZ 00428936 <====不相同就跳走
0177:00428928 ADD EAX,BYTE +02
0177:0042892B ADD ESI,BYTE +02
0177:0042892E TEST CL,CL
0177:00428930 JNZ 0042890E <====比較未結束則繼續比較
0177:00428932 XOR EAX,EAX
0177:00428934 JMP SHORT 0042893B
==============================================================
OK,整理一下,使用者名稱:maomao,註冊碼:BmbqpetshwvkzynD
==============================================================
序號產生器制作:
執行序號產生器編寫器(作者主頁http://www.365hz.net),按F8或選擇選單“其它”->“另類序號產生器”,在彈出的設定框中,進行如下設定:
1、按“瀏覽”按鈕,選擇EncryptGenie.exe;
2、按下方“新增”銨鈕,新增如下資料:
中斷地址:42890E <=====指定在正確註冊碼算出後中斷(請參閱上邊程式碼)
中斷次數:1
第一位元組:8A <=====MOV
DL,[EAX]的指令的第一個機器程式碼
指令長度:2 <=====被中斷的指令的程式碼長度
3、在右邊註冊碼選項中選擇“記憶體方式”,並勾選其下方的單選框,選擇ESI(註冊碼被放在ESI所指的記憶體中);
4、設定使用者資訊(你的相關資料啦);
5、按“生成”,輸入生成的EXE檔名(放到主程式同一目錄下)。
執行一下你生成的檔案,EncryptGenie被自動執行,並要求註冊,輸入使用者名稱,註冊碼隨意,按“註冊”按鈕,OK,真正的註冊碼就跳出來了!!!
哇,寫得手有點累了(剛狂聊了3小時),好了,收工~~~~
==============================================================