• 标 题:菜鸟破解实录 之 GWD Text Editor 3.0 (9千字)
  • 作 者:xiA Qin
  • 时 间:2000-8-16 9:09:07
  • 链 接:http://bbs.pediy.com

菜鸟破解实录 之 GWD Text Editor 3.0

软件名称:GWD Text Editor      -->(30天试用)
软件版本:3.0 
软件下载: http://www.iridis.com/gwd/index.htm
简    介: 
        功能完整的文字编辑工具,不限制打开文件大小,可读取WordPerfect,MSWord这类常见软件的文件类型。

作    者:Backbuy / xiA Qin
级    别:刚学不久
解密日前:2000年8月14日
解密工具:Trw2000 1.22
破解目的:学习注册码的破解。(简单)


说    明:
        以前,破解过这个软件,当时用的是暴力,没有找到注册码。

        backboy兄的指导下,终于找到了注册码,重新把它贴出来。

         



首先运行GWD Text Editor
输入注册信息

register:  9876543210          &任意输入

下指令bpx hmemcpy    //下中断点 

按F5回到程序,按确定,这时会被Trw2000拦截到。

下指令bd *            //屏障中断点

下指令pmodule        //直接跳到程序的领空


按F10来到下面指令
...............

015F:004AD304  6810905A00          PUSH      005A9010
015F:004AD309  E8CADEFFFF          CALL      004AB1D8        //通过下面的分析。肯定此CALL.
015F:004AD30E  59                  POP      ECX              有问题。按F8进入。
015F:004AD30F  85C0                TEST      EAX,EAX        //以EAX=1作为注册标志。
015F:004AD311  746B                JZ        004AD37E        //跳到004AD37E,就死定了
015F:004AD313  E8B8EAFFFF          CALL      004ABDD0
015F:004AD318  8BF0                MOV      ESI,EAX
015F:004AD31A  89357C905A00        MOV      [005A907C],ESI
015F:004AD320  85F6                TEST      ESI,ESI
015F:004AD322  742E                JZ        004AD352
015F:004AD324  6A40                PUSH      40
015F:004AD326  6A04                PUSH      04
015F:004AD328  68234E0000          PUSH      00004E23
015F:004AD32D  833D44495D0000      CMP      DWORD PTR [005D4944],00
015F:004AD334  8B03                MOV      EAX,[EBX]
015F:004AD336  8B500C              MOV      EDX,[EAX+0C]
015F:004AD339  52                  PUSH      EDX
015F:004AD33A  7508                JNZ      004AD344
015F:004AD33C  8B0D6B505900        MOV      ECX,[0059506B]
015F:004AD342  EB06                JMP      004AD34A
015F:004AD344  8B0D44495D00        MOV      ECX,[005D4944]
015F:004AD34A  51                  PUSH      ECX
015F:004AD34B  E8E8C70000          CALL      004B9B38      //注册成功对话框
015F:004AD350  EB5D                JMP      004AD3AF
015F:004AD352  6A10                PUSH      10
015F:004AD354  6A04                PUSH      04
015F:004AD356  68244E0000          PUSH      00004E24
015F:004AD35B  833D44495D0000      CMP      DWORD PTR [005D4944],00
015F:004AD362  8B03                MOV      EAX,[EBX]
015F:004AD364  8B500C              MOV      EDX,[EAX+0C]
015F:004AD367  52                  PUSH      EDX
015F:004AD368  7507                JNZ      004AD371
015F:004AD36A  A16B505900          MOV      EAX,[0059506B]
015F:004AD36F  EB05                JMP      004AD376
015F:004AD371  A144495D00          MOV      EAX,[005D4944]
015F:004AD376  50                  PUSH      EAX
015F:004AD377  E8BCC70000          CALL      004B9B38
015F:004AD37C  EB31                JMP      004AD3AF
015F:004AD37E  6A30                PUSH      30
015F:004AD380  6A04                PUSH      04
015F:004AD382  C60510905A0000      MOV      BYTE PTR [005A9010],00
015F:004AD389  68224E0000          PUSH      00004E22
015F:004AD38E  8B13                MOV      EDX,[EBX]
015F:004AD390  833D44495D0000      CMP      DWORD PTR [005D4944],00
015F:004AD397  8B4A0C              MOV      ECX,[EDX+0C]
015F:004AD39A  51                  PUSH      ECX
015F:004AD39B  7507                JNZ      004AD3A4
015F:004AD39D  A16B505900          MOV      EAX,[0059506B]
015F:004AD3A2  EB05                JMP      004AD3A9
015F:004AD3A4  A144495D00          MOV      EAX,[005D4944]
015F:004AD3A9  50                  PUSH      EAX
015F:004AD3AA  E889C70000          CALL      004B9B38            //注册失败对话框
015F:004AD3AF  BA01000000          MOV      EDX,00000001
015F:004AD3B4  833D7C905A0000      CMP      DWORD PTR [005A907C],00
015F:004AD3BB  7501                JNZ      004AD3BE
015F:004AD3BD  42                  INC      EDX
015F:004AD3BE  52                  PUSH      EDX
015F:004AD3BF  53                  PUSH      EBX
015F:004AD3C0  8B4B0C              MOV      ECX,[EBX+0C]
015F:004AD3C3  FF5120              CALL      [ECX+20]
015F:004AD3C6  83C408              ADD      ESP,08
015F:004AD3C9  5E                  POP      ESI
015F:004AD3CA  5B                  POP      EBX
015F:004AD3CB  5D                  POP      EBP
015F:004AD3CC  C3                  RET
.............................

按F8进入004AD309      CALL      004AB1D8

015F:004AB1D8  PUSH      EBP
015F:004AB1D9  MOV      EBP,ESP
015F:004AB1DB  PUSH      EBX
015F:004AB1DC  PUSH      ESI
015F:004AB1DD  MOV      EBX,[EBP+08]
015F:004AB1E0  MOV      ESI,005D273C
015F:004AB1E5  MOV      AL,[EBX]
015F:004AB1E7  INC      EBX
015F:004AB1E8  XOR      EDX,EDX
015F:004AB1EA  MOV      DL,AL
015F:004AB1EC  PUSH      EDX
015F:004AB1ED  CALL      00587248
015F:004AB1F2  POP      ECX
015F:004AB1F3  CMP      EAX,47      <--比较注册码的第1位
015F:004AB1F6  JZ        004AB1FF    <--相等,就跳。继续比较下一位。
015F:004AB1F8  XOR      EAX,EAX
015F:004AB1FA  JMP      004AB2F2
015F:004AB1FF  MOV      DL,[EBX]
015F:004AB201  INC      EBX
015F:004AB202  XOR      ECX,ECX
015F:004AB204  MOV      CL,DL
015F:004AB206  PUSH      ECX
015F:004AB207  CALL      00587248
015F:004AB20C  POP      ECX
015F:004AB20D  CMP      EAX,57    <--比较注册码的第2位
015F:004AB210  JZ        004AB219    <--相等,就跳。继续比较下一位。
015F:004AB212  XOR      EAX,EAX
015F:004AB214  JMP      004AB2F2
015F:004AB219  MOV      DL,[EBX]
015F:004AB21B  INC      EBX
015F:004AB21C  XOR      ECX,ECX
015F:004AB21E  MOV      CL,DL
015F:004AB220  PUSH      ECX
015F:004AB221  CALL      00587248
015F:004AB226  POP      ECX
015F:004AB227  CMP      EAX,44    <--比较注册码的第3位
015F:004AB22A  JZ        004AB233    <--相等,就跳。继续比较下一位。
015F:004AB22C  XOR      EAX,EAX
015F:004AB22E  JMP      004AB2F2
015F:004AB233  MOV      DL,[EBX]
015F:004AB235  INC      EBX
015F:004AB236  MOVSX    ECX,DL
015F:004AB239  CMP      ECX,2D    <--比较注册码的第4位
015F:004AB23C  JZ        004AB245    <--相等,就跳。继续比较下一位。
015F:004AB23E  XOR      EAX,EAX
015F:004AB240  JMP      004AB2F2
015F:004AB245  MOV      DL,[EBX]
015F:004AB247  INC      EBX
015F:004AB248  MOVSX    ECX,DL
015F:004AB24B  CMP      ECX,33    <--比较注册码的第5位
015F:004AB24E  JZ        004AB257    <--相等,就跳。继续比较下一位。
015F:004AB250  XOR      EAX,EAX
015F:004AB252  JMP      004AB2F2
015F:004AB257  MOV      DL,[EBX]
015F:004AB259  INC      EBX
015F:004AB25A  MOVSX    ECX,DL
015F:004AB25D  CMP      ECX,30    <--比较注册码的第6位
015F:004AB260  JZ        004AB269    <--相等,就跳。继续比较下一位。
015F:004AB262  XOR      EAX,EAX
015F:004AB264  JMP      004AB2F2
015F:004AB269  MOV      DL,[EBX]
015F:004AB26B  INC      EBX
015F:004AB26C  MOVSX    ECX,DL
015F:004AB26F  CMP      ECX,2D    <--比较注册码的第7位
015F:004AB272  JZ        004AB278    <--相等,就跳。继续比较下一位。
015F:004AB274  XOR      EAX,EAX
015F:004AB276  JMP      004AB2F2
015F:004AB278  MOV      DL,[EBX]
015F:004AB27A  XOR      ECX,ECX
015F:004AB27C  MOV      CL,DL
015F:004AB27E  INC      EBX
015F:004AB27F  TEST      BYTE PTR [ECX*2+ESI+03],01  //检查注册码第8位是否是字母。
015F:004AB284  JNZ      004AB28A
015F:004AB286  XOR      EAX,EAX
015F:004AB288  JMP      004AB2F2
015F:004AB28A  MOV      DL,[EBX]
015F:004AB28C  XOR      ECX,ECX
015F:004AB28E  MOV      CL,DL
015F:004AB290  INC      EBX
015F:004AB291  TEST      BYTE PTR [ECX*2+ESI+03],01  //检查注册码第9位是否是字母
015F:004AB296  JNZ      004AB29C
015F:004AB298  XOR      EAX,EAX
015F:004AB29A  JMP      004AB2F2
015F:004AB29C  MOV      DL,[EBX]
015F:004AB29E  XOR      ECX,ECX
015F:004AB2A0  MOV      CL,DL
015F:004AB2A2  INC      EBX
015F:004AB2A3  TEST      BYTE PTR [ECX*2+ESI+02],04  //检查注册码第10位是否是数字
015F:004AB2A8  JNZ      004AB2AE
015F:004AB2AA  XOR      EAX,EAX
015F:004AB2AC  JMP      004AB2F2
015F:004AB2AE  MOV      DL,[EBX]
015F:004AB2B0  XOR      ECX,ECX
015F:004AB2B2  MOV      CL,DL
015F:004AB2B4  INC      EBX
015F:004AB2B5  TEST      BYTE PTR [ECX*2+ESI+02],04  //检查注册码第11位是否是数字
015F:004AB2BA  JNZ      004AB2C0
015F:004AB2BC  XOR      EAX,EAX
015F:004AB2BE  JMP      004AB2F2
015F:004AB2C0  MOV      DL,[EBX]
015F:004AB2C2  XOR      ECX,ECX
015F:004AB2C4  MOV      CL,DL
015F:004AB2C6  INC      EBX
015F:004AB2C7  TEST      BYTE PTR [ECX*2+ESI+02],04  //检查注册码第12位是否是数字
015F:004AB2CC  JNZ      004AB2D2
015F:004AB2CE  XOR      EAX,EAX
015F:004AB2D0  JMP      004AB2F2
015F:004AB2D2  MOV      DL,[EBX]
015F:004AB2D4  XOR      ECX,ECX
015F:004AB2D6  MOV      CL,DL
015F:004AB2D8  INC      EBX
015F:004AB2D9  TEST      BYTE PTR [ECX*2+ESI+02],04  //检查注册码第13位是否是数字
015F:004AB2DE  JNZ      004AB2E4
015F:004AB2E0  XOR      EAX,EAX
015F:004AB2E2  JMP      004AB2F2
015F:004AB2E4  CMP      BYTE PTR [EBX],00  //检查注册码的位数,13位
015F:004AB2E7  JZ        004AB2ED          //超过13位,就跳。玩完
015F:004AB2E9  XOR      EAX,EAX
015F:004AB2EB  JMP      004AB2F2
015F:004AB2ED  MOV      EAX,00000001      <--将EAX赋值为1
015F:004AB2F2  POP      ESI
015F:004AB2F3  POP      EBX
015F:004AB2F4  POP      EBP
015F:004AB2F5  RET
..................


我们把比较的数字抄下了分别是
1  2  3  4  5  6  7 
47 57 44 2D 33 30 2D

查ASCII字符表,十六进制。

十六进制: 47 57 44 2D 33 30 2D
分别对应: G  W  D  -  3  0  -  (GWD-30-    )

X代表字母。*代表数字。

8  9 10  11 12 13 
X  X  *  *  *  *
 
整理一下,输入注册信息 
 
code: GWD-30-XX****

比如:我的注册码是GWD-30-AB1234
   

后  记:
      GWD Text Editor是通过读取安装目录下的文件Reg.lic来判断,程序是否注册。不管注册码是否正确。如果把文件Reg.lic删除,GWD Text Editor又成了非注册版。