ZTZ-IE網路瀏覽器的破解與序號產生器,應付PETERCHEN用的 (8千字)

看雪資料發表於2001-08-11

ZTZ-IE網路瀏覽器的破解與序號產生器
 
(版本1.8)
軟體說明: 
  該軟體是你快速開啟、快速瀏覽網頁的最佳瀏覽器軟體,
該版本在原有功能基礎上,新增了字型大小選項、設定為默
認瀏覽器等項功能,並新增了更多、更新的網址,使你訪問
網頁更加方便。進一步最佳化了原始碼,穩定性進一步提高。
下載地址:http://202.99.189.4/ztz/ZTZ-IE.zip
使用工具:TRW2000
難度    :0.5 (10為最難,0為最易)
CRACKER :偽裝者[BCG&&CCG]
目的    :學習破解一週年紀念+應付PETERCHEN那傢伙
過程如下:
1、下載(廢話)
2、安裝(還是廢話)
3、啟動ZTZ-IE(……)
4、輸入使用者名稱、註冊碼,
  使用者名稱:cracknow
  註冊碼:121212
5、啟動TRW2000、BPX HMEMCPY
6、按確定,被攔截
7、BC *PMODULE,到ZTZ-IE部分(也叫領空)
8、N次F12(N=7 OR N=8)F9
9、一路F10,直到0167:0046C034 CALL 0046BD9C這行,因為這個CALL就是關鍵
  的計算註冊碼的CALL,F8跟進。為什麼這麼判斷?有經驗的看一眼下面有一個
  CALL+JNZ,應該就是註冊碼比較的部分了,沒經驗的接著F10,等著出錯,記
  住位置然後下回在進來。
以下為計算註冊碼的部分,在這之前有判斷使用者名稱長度是否大於3的
在這之後就是計算註冊碼與輸入的註冊碼的對比
0167:0046BDE4  MOV      EBX,01                    初始化EBX=1
0167:0046BDE9  MOV      ECX,EBX                    ECX=EBX
0167:0046BDEB  IMUL    ECX,EBX                    ECX*=EBX
0167:0046BDEE  MOV      EAX,ECX                    EAX=ECX
0167:0046BDF0  IMUL    EBX                        EAX*=EBX
0167:0046BDF2  LEA      EDX,[EBX+14]              EDX=EBX+0X14
0167:0046BDF5  MOV      EDI,EDX                    EDI=EDX
0167:0046BDF7  CDQ                     
0167:0046BDF8  IDIV    EDI                        EAX/=EDI,EDX=EAX%EDI
0167:0046BDFA  MOV      EDI,EDX                    EDI=EDX
0167:0046BDFC  MOV      EAX,ECX                    EAX=ECX
0167:0046BDFE  LEA      EDX,[EBX+0A]              EDX+=EBX+0XA
0167:0046BE01  MOV      ECX,EDX                    ECX=EDX
0167:0046BE03  CDQ   
0167:0046BE04  IDIV    ECX                        EAX/=ECX,EDX=EAX%ECX
0167:0046BE06  ADD      EDI,EDX                    EDI+=EDX
0167:0046BE08  MOV      EAX,EDI                    EAX=EDI
0167:0046BE0A  MOV      EDX,EBX                    EDX=EBX 
0167:0046BE0C  ADD      EDX,EDX                    EDX+=EDX
0167:0046BE0E  ADD      EAX,EDX                    EAX+=EDX
0167:0046BE10  ADD      EAX,BYTE +08              EAX+=8
0167:0046BE13  MOV      EDX,[EBP-0C]               
0167:0046BE16  MOVZX    EDX,BYTE [EDX+EBX-01]      EDX=STRING[i]
0167:0046BE1B  ADD      EAX,EDX                    EAX+=EDX
0167:0046BE1D  CMP      EAX,BYTE +7A -------------|             
0167:0046BE20  JNG      0046BE2A                  |
0167:0046BE22  SUB      EAX,BYTE +0A              |
0167:0046BE25  CMP      EAX,BYTE +7A              |
0167:0046BE28  JG      0046BE22                  |
0167:0046BE2A  CMP      EAX,BYTE +61              |------>比較EAX是否在'a'~'z'之間,大於每次減10
0167:0046BE2D  JNL      0046BE37                  |      小於每次加10直到EAX在'a'~'z'之間
0167:0046BE2F  ADD      EAX,BYTE +0A              |
0167:0046BE32  CMP      EAX,BYTE +61              |
0167:0046BE35  JL      0046BE2F    --------------|
0167:0046BE37  MOV      [EBP-15],AL               
0167:0046BE3A  LEA      EAX,[EBP-1C]
0167:0046BE3D  MOV      DL,[EBP-15]
0167:0046BE40  CALL    00403D14
0167:0046BE45  MOV      EDX,[EBP-1C]
0167:0046BE48  LEA      EAX,[EBP-10]
0167:0046BE4B  CALL    00403DF4
0167:0046BE50  INC      EBX                      EBX++
0167:0046BE51  DEC      ESI                      ESI--(ESI中為使用者名稱長度)
0167:0046BE52  JNZ      0046BDE9                 
0167:0046BE54  MOV      EAX,[EBP-10]       
0167:0046BE57  CALL    00403DEC
0167:0046BE5C  CMP      EAX,BYTE +0A              比較生成註冊碼長度是否<10
0167:0046BE5F  JNL      NEAR 0046BEE9            >=則跳
0167:0046BE65  MOV      EAX,[EBP-10]             
0167:0046BE68  CALL    00403DEC                  求使用者名稱長度的CALL
0167:0046BE6D  PUSH    EAX                     
0167:0046BE6E  MOV      EAX,0A
0167:0046BE73  POP      EDX
0167:0046BE74  SUB      EAX,EDX                  10-使用者名稱長度
0167:0046BE76  MOV      ESI,EAX
0167:0046BE78  TEST    ESI,ESI
0167:0046BE7A  JNG      0046BEE9
0167:0046BE7C  MOV      EBX,01  ------------------|
0167:0046BE81  MOV      ECX,EBX                  |
0167:0046BE83  IMUL    ECX,EBX                  |
0167:0046BE86  MOV      EAX,ECX                  |    和上面的計算註冊碼的迴圈類似
0167:0046BE88  IMUL    EBX                      |    作用是如果註冊碼不足10位補齊
0167:0046BE8A  LEA      EDX,[EBX+14]              |    註冊碼
0167:0046BE8D  MOV      EDI,EDX                  |
0167:0046BE8F  CDQ                                |
0167:0046BE90  IDIV    EDI                      |
0167:0046BE92  MOV      EDI,EDX                  |
0167:0046BE94  MOV      EAX,ECX                  |
0167:0046BE96  LEA      EDX,[EBX+0A]              |
0167:0046BE99  MOV      ECX,EDX                  |
0167:0046BE9B  CDQ                                |
0167:0046BE9C  IDIV    ECX                      |
0167:0046BE9E  ADD      EDI,EDX                  |
0167:0046BEA0  MOV      EAX,EDI                  |
0167:0046BEA2  MOV      EDX,EBX                  |
0167:0046BEA4  ADD      EDX,EDX                  |
0167:0046BEA6  ADD      EAX,EDX                  |
0167:0046BEA8  INC      EAX                      |  ****這裡和上面不一樣EAX++
0167:0046BEA9  MOV      EDX,[EBP-0C]              | 
0167:0046BEAC  MOVZX    EDX,BYTE [EDX+01]        |      EDX=STRING[1]*********
0167:0046BEB0  ADD      EAX,EDX                  |
0167:0046BEB2  CMP      EAX,BYTE +7A              |
0167:0046BEB5  JNG      0046BEBF                  |
0167:0046BEB7  SUB      EAX,BYTE +0A              |
0167:0046BEBA  CMP      EAX,BYTE +7A              |
0167:0046BEBD  JG      0046BEB7                  |
0167:0046BEBF  CMP      EAX,BYTE +61              |
0167:0046BEC2  JNL      0046BECC                  |
0167:0046BEC4  ADD      EAX,BYTE +0A              |
0167:0046BEC7  CMP      EAX,BYTE +61              |
0167:0046BECA  JL      0046BEC4                  |
0167:0046BECC  MOV      [EBP-15],AL              |
0167:0046BECF  LEA      EAX,[EBP-20]              |
0167:0046BED2  MOV      DL,[EBP-15]              |
0167:0046BED5  CALL    00403D14                  |
0167:0046BEDA  MOV      EDX,[EBP-20]              |
0167:0046BEDD  LEA      EAX,[EBP-10]              |
0167:0046BEE0  CALL    00403DF4                  |
0167:0046BEE5  INC      EBX                      |
0167:0046BEE6  DEC      ESI                      |  ESI=10-註冊碼長度
0167:0046BEE7  JNZ      0046BE81------------------|
0167:0046BEE9  MOV      EAX,[EBP-10]----------------|
0167:0046BEEC  CALL    00403DEC                    |
0167:0046BEF1  MOV      ESI,EAX                    |
0167:0046BEF3  TEST    ESI,ESI                    |
0167:0046BEF5  JNG      0046BF23                    |
0167:0046BEF7  MOV      EBX,01                      |註冊碼倒續
0167:0046BEFC  MOV      EAX,[EBP-10]                |
0167:0046BEFF  CALL    00403DEC                    |
0167:0046BF04  SUB      EAX,EBX                    |
0167:0046BF06  MOV      EDX,[EBP-10]                |
0167:0046BF09  MOV      DL,[EDX+EAX]                |
0167:0046BF0C  LEA      EAX,[EBP-24]                |
0167:0046BF0F  CALL    00403D14                    |
0167:0046BF14  MOV      EDX,[EBP-24]                |
0167:0046BF17  LEA      EAX,[EBP-14]                |
0167:0046BF1A  CALL    00403DF4                    |
0167:0046BF1F  INC      EBX                        |
0167:0046BF20  DEC      ESI                        |
0167:0046BF21  JNZ      0046BEFC--------------------|
0167:0046BF23  MOV      EAX,[EBP-08]
0167:0046BF26  MOV      EDX,[EBP-14]

到這裡就差不多了,不過我認為這樣生成的註冊碼實在是沒什麼意思,生成的註冊碼
大概也就是從'p'到'z'雖然有<0x61 +0xa但是一般只有輸入大寫字母或數字符號時才
出現,即使26個字母全出全了,這樣的註冊碼演算法也太過簡單,建議作者在下個版本
中改進。

後面跟這個的序號產生器
#include "stdio.h"
main()
{ int c,d,i,eax,ebx,ecx,edx,edi;
  unsigned char string[80];
  start:printf("********ZTZ-IE 1.8*********\nThis keygen is made by Pretender\nPlease input your name  : ");
  gets(string);
  d=strlen(string);
  if(d<4) {printf("Your name must more than 3 letters!!!\n\n");goto start;}
  c=string[1];
  for(i=0;;i++)
  {
  ebx=i+1;
  if(i>=d) ebx-=d;
  ecx=ebx;ecx*=ebx;eax=ecx;eax*=ebx;edi=ebx+0x14;edi=eax%edi;
  eax=ecx;edx=ebx+0xa;ecx=edx;edi+=eax%ecx;eax=edi;edx=ebx;
  edx+=edx;eax+=edx;
  if(i<d) eax+=8,eax+=string[i];
  else {if(d>10) {if(i==d) break;}
     if(d<=10) {if(i==10) break;}
     eax+=1,eax+=c;}
  while(eax>0x7a)
  eax-=0xa;
  while(eax<0x61)
  eax+=0xa;
  string[i]=eax;
  }
  printf("Your Register code is  : ");
  for(;i>=0;i--)
  printf("%c",string[i-1]);
printf("\n *****************************      ---    ---    ---\n *Welcome to WWW.CRACKNOW.COM*      /      /      / --\n *****************************      ---    ---    --/\n");
}

相關文章