申請加入BCG破文3--加密精靈EncryptGenie22註冊碼破解及序號產生器制作 (5千字)

看雪資料發表於2001-10-28

加密精靈(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小時),好了,收工~~~~
==============================================================

相關文章