菜鳥破解實錄 之 GWD Text Editor 3.0 (9千字)

看雪資料發表於2000-08-16

菜鳥破解實錄 之 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又成了非註冊版。

相關文章