• 标 题:中华压缩V7.0破解手记 (4千字)
  • 作 者:crackYY[CNCG]
  • 时 间:2001-11-20 0:08:39
  • 链 接:http://bbs.pediy.com

作者:crackYY[CNCG]
工具:FileInfo v2.45  TRW2000 V1.22  procdump v1.62  keymake v1.34

  这个东东不注册只能用30天,每次运行都会提示你去注册它,功能方面我还不清楚,反正我也不打算用它。下面我就介绍一下它的破解经过。
  首先用FI检测一下是否加了壳,我靠,是用ASPack2001加的壳。用我的Procdump脱壳(这个壳是我后加的,原版没有)。  ,请出TRW大侠上场(鼓掌呀,啊…什么东西砸我!),再请出今天的主角中华压缩(不准乱扔瓜果皮壳!)。好,现在它提示你注册啦!当然是点击注册按钮啦(不过我不打算花钱:D),用户名和注册码随便添一个就行,我写的用户名是:crackYY 注册码:78787878 ,然后Ctrl+N呼出TRW,下断点:bpx hmemcpy,再按F5把控制权交给中华压缩。接着点击确定按钮,TRW会弹出,这时看到的是系统的领空,所以下命令:bc * 清除断点,再下命令:pmodule 直接跳到程序的领空,这时会看到如下代码:

0167:00436D0E  CALL    `USER32!CallWindowProcA`
0167:00436D13  MOV      [EBX+0C],EAX
0167:00436D16  MOV      EAX,[EBX]
0167:00436D18  CMP      EAX,BYTE +0C
0167:00436D1B  JNZ      00436D38
0167:00436D1D  MOV      EDX,[EBX+08]
0167:00436D20  PUSH    EDX
0167:00436D21  MOV      ECX,[EBX+04]
0167:00436D24  MOV      EDX,EAX
0167:00436D26  MOV      EAX,ESI
0167:00436D28  CALL    00432B24
0167:00436D2D  JMP      SHORT 00436D38
0167:00436D2F  MOV      EDX,EBX
0167:00436D31  MOV      EAX,ESI
0167:00436D33  CALL    004340F4

  由于我们下的断点是:bpx hmemcpy ,所以要继续向下走,一直找到出错的地方,然后再后再向回分析,找到正确的注册码。按7次F12(超过7次就会出错),然后再向下分析:

0167:00432F51  POP      EBX
0167:00432F52  RET   
0167:00432F53  NOP   
0167:00432F54  PUSH    EBP
0167:00432F55  MOV      EBP,ESP
0167:00432F57  PUSH    BYTE +00
0167:00432F59  PUSH    EBX
0167:00432F5A  PUSH    ESI
0167:00432F5B  MOV      ESI,EDX
0167:00432F5D  MOV      EBX,EAX
0167:00432F5F  XOR      EAX,EAX
0167:00432F61  PUSH    EBP
0167:00432F62  PUSH    DWORD 00432FA9
0167:00432F67  PUSH    DWORD [FS:EAX]
0167:00432F6A  MOV      [FS:EAX],ESP
0167:00432F6D  LEA      EDX,[EBP-04]
0167:00432F70  MOV      EAX,EBX
0167:00432F72  CALL    00432F24
0167:00432F77  MOV      EAX,[EBP-04]
0167:00432F7A  MOV      EDX,ESI
0167:00432F7C  CALL    0040411C
 
按F10来到如下代码处:

0167:004F4DBF  CALL    00432F24
0167:004F4DC4  MOV      EAX,[EBP-08]
0167:004F4DC7  PUSH    EAX
0167:004F4DC8  LEA      EDX,[EBP-10]
0167:004F4DCB  MOV      EAX,[EBX+02E0]
0167:004F4DD1  CALL    00432F24
0167:004F4DD6  MOV      EDX,[EBP-10]
0167:004F4DD9  LEA      ECX,[EBP-0C]
0167:004F4DDC  MOV      EAX,EBX
0167:004F4DDE  CALL    004F4FAC
0167:004F4DE3  MOV      EDX,[EBP-0C]
0167:004F4DE6  POP      EAX
0167:004F4DE7  CALL    0040411C  这里按F8进入
0167:004F4DEC  JNZ      004F4E64  跳过去就完蛋!
0167:004F4DEE  MOV      DL,01
0167:004F4DF0  MOV      EAX,[00452558]
0167:004F4DF5  CALL    00452658
0167:004F4DFA  MOV      [EBP-04],EAX
0167:004F4DFD  XOR      EAX,EAX
0167:004F4DFF  PUSH    EBP
0167:004F4E00  PUSH    DWORD 004F4E5D
0167:004F4E05  PUSH    DWORD [FS:EAX]
0167:004F4E08  MOV      [FS:EAX],ESP
0167:004F4E0B  MOV      CL,01
0167:004F4E0D  MOV      EDX,004F4EA8
0167:004F4E12  MOV      EAX,[EBP-04]
 
  按F10走到004F4DE7处,用F8跟进,看到如下代码:
0167:00404119  LEA      EAX,[EAX+00]
0167:0040411C  PUSH    EBX  这里可以看到真的注册码
0167:0040411D  PUSH    ESI
0167:0040411E  PUSH    EDI
0167:0040411F  MOV      ESI,EAX
0167:00404121  MOV      EDI,EDX
0167:00404123  CMP      EAX,EDX
0167:00404125  JZ      NEAR 004041BA
0167:0040412B  TEST    ESI,ESI
0167:0040412D  JZ      00404197
0167:0040412F  TEST    EDI,EDI
0167:00404131  JZ      0040419E
0167:00404133  MOV      EAX,[ESI-04]
0167:00404136  MOV      EDX,[EDI-04]
0167:00404139  SUB      EAX,EDX

在0040411c处,下命令:d edx 会看到真正的注册码,下命令:d eax 会看到我刚才输入的假注册码。
             
  好了,到了最后一步,来个注册机玩(谁让我看你不顺眼,让你永世不得翻身!)。请出keymake,选择另类注册机,添法如下:

  第一个地址: 
   
    中断地址:4F4DE7
    中断次数:1
    第一字节:E8
    指令长度:5                                                       

  第二个地址:
   
    中断地址:40411C                     
    中断次数:1
    第一字节:53
    指令长度:1
                                     
终于结束战斗啦,对啦,这个东东可是加了壳的哦,别忘了选上"经过加壳"呀!                                                             

                                                                                E-mail:crackYY@hotmail.com

                                                                                oicq:20651482