敏思硬碟衛士 v2.2破解手記 (4千字)

看雪資料發表於2001-11-20
工具:trw2000 v1.23 keymake v1.34  FileInfo v2.45  
  最近看雪論壇一直不太平靜,時常有人在論壇發一些什麼"crack們醒悟吧",甚至罵我們這些crack是"敗類"!可甚者有人冒名頂替向兄弟們發病毒,硬碟被黑(在這,我就不說是誰啦),小黑被冤枉(我相信不是他乾的),就連我申請加入FCG的破解手記都被當成………
  為了安全起見,我勸大家去申請hotmail郵箱,因為這個郵箱自帶macfee防毒工具,雖然空間小了些。由於看到這麼多兄弟被害,所以自已也不得不提高警惕,有一些熱心朋友給我來信,讓我試試鎖硬碟的工具,以防萬一。於是,我在網上找了一個"敏思硬碟衛士 v2.2",我曾經給我的一個朋友破過1.1版,覺得這個軟體在防解密方面做的實在不怎麼樣,不過功能還不錯,下面我就介紹一下"敏思硬碟衛士 v2.2版"的破解過程,希望能給初學者一些啟發。
  還是老樣子,先用FI檢測一下這個軟體是否加殼。嗯……沒有加殼,那還等什麼?執行敏思硬碟衛士,點選註冊,隨便寫幾個數字,我寫的是:1212121212 。再按Ctrl+N撥出trw,下斷點:bpx hmemcpy ,然後按F5回到程式,點選註冊,馬上會被trw攔截,下命令:bc * ,清除斷點,接看再下命令:pmodule ,直接跳到程式領空,這時會看到以下程式碼:
 
  0167:004355A2  CALL    `USER32!CallWindowProcA`
0167:004355A7  MOV      [EBX+0C],EAX
0167:004355AA  MOV      EAX,[EBX]
0167:004355AC  CMP      EAX,BYTE +0C
0167:004355AF  JNZ      004355CC
0167:004355B1  MOV      EDX,[EBX+08]
0167:004355B4  PUSH    EDX
0167:004355B5  MOV      ECX,[EBX+04]
0167:004355B8  MOV      EDX,EAX
0167:004355BA  MOV      EAX,ESI
0167:004355BC  CALL    00431450
0167:004355C1  JMP      SHORT 004355CC
0167:004355C3  MOV      EDX,EBX
0167:004355C5  MOV      EAX,ESI
0167:004355C7  CALL    00432A10

然後連續按F12,按8次後,會彈出提示註冊碼錯誤的對話方塊,點選確定後,trw會再次彈出,這時可看到以下程式碼:

0167:004A41F0  CALL    00403C1C
0167:004A41F5  RET    ―――――――――――――游標停在這一行
0167:004A41F6  JMP      00403630
0167:004A41FB  JMP      SHORT 004A41D8
0167:004A41FD  POP      EBX
0167:004A41FE  MOV      ESP,EBP
0167:004A4200  POP      EBP   
0167:004A4201  RET   
0167:004A4202  ADD      [EAX],AL
0167:004A4204  AND      BL,AL
0167:004A4206  HLT   
0167:004A4207  RETF   
0167:004A4208  MOV      ESP,CCC5B2D3
0167:004A420D  INTO   
0167:004A420E  ROR      DL,BF

  然後再按Ctrl+PageUp ,一直到出現如下程式碼為止:

0167:004A4169  CALL    00403FAC ―――――這裡按F8跟進
0167:004A416E  JZ      004A4193
0167:004A4170  PUSH    BYTE +30
0167:004A4172  PUSH    DWORD 004A4204
0167:004A4177  PUSH    DWORD 004A4214
0167:004A417C  PUSH    BYTE +00
0167:004A417E  CALL    `USER32!MessageBoxA`
0167:004A4183  MOV      EAX,[EBX+030C]
0167:004A4189  MOV      EDX,[EAX]
0167:004A418B  CALL    NEAR [EDX+B0]
0167:004A4191  JMP      SHORT 004A41CB
0167:004A4193  LEA      EDX,[EBP-10]
0167:004A4196  MOV      EAX,[EBX+030C]
0167:004A419C  CALL    00431850
0167:004A41A1  MOV      EDX,[EBP-10]

由於我們要進入004A4169處的Call,所以這時把游標移到這一行,按F9在這行設斷點,然後按F5返回程式,接著再點選"註冊",這樣trw馬上會攔截004A4169處的Call,按F8跟進後,會看到如下程式碼:

0167:00403FA9  LEA      EAX,[EAX+00]
0167:00403FAC  PUSH    EBX ―――――――在這裡下命令:d edx會看到真正的註冊碼(0000000000)
0167:00403FAD  PUSH    ESI
0167:00403FAE  PUSH    EDI
0167:00403FAF  MOV      ESI,EAX
0167:00403FB1  MOV      EDI,EDX
0167:00403FB3  CMP      EAX,EDX
0167:00403FB5  JZ      NEAR 0040404A
0167:00403FBB  TEST    ESI,ESI
0167:00403FBD  JZ      00404027
0167:00403FBF  TEST    EDI,EDI
0167:00403FC1  JZ      0040402E
0167:00403FC3  MOV      EAX,[ESI-04]
0167:00403FC6  MOV      EDX,[EDI-04]
0167:00403FC9  SUB      EAX,EDX

  這時在00403FAC一行下命令:d edx 會看到:0000000000 ,然後按F5返回程式,輸入:0000000000 ,註冊成功。
不過還不要笑的太早,這個軟體是取隨機號來計算註冊碼的,也就是說一臺電腦一個註冊號,所以我們有必要做一個序號產生器。執行keymake,點選另類序號產生器,寫入以下數值:

第一個中斷地址:

  中斷地址:4A4169
  中斷次數:1
  第一位元組:E8
  指令長度:5

第二個中斷地址:

  中斷地址:403FAC
  中斷次數:1
  第一位元組:53
  指令長度:1

  好啦,收工!
                                                                                              作者:crackYY[CNCG]
                                                                                              QQ:20651482
                                                                                              E-mail:crackYY@hotmail.com

相關文章