• 标 题:敏思硬盘卫士 v2.2破解手记 (4千字)
  • 作 者:crackYY[CNCG]
  • 时 间:2001-11-20 0:07:32
  • 链 接:http://bbs.pediy.com
工具: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