Quick CHM V2.4.9

看雪資料發表於2003-01-15

目標軟體:  Quick CHM V2.4.9

軟體大小:  1061 KB

軟體語言:  簡體中文

軟體類別:  共享版 / 安裝製作

應用平臺:  Win9x/NT/2000/XP

下載地址:  http://www.skycn.com/soft/6785.html

軟體介紹:
   原名電子文件處理大師。是真正的所見即所得(WYSIWYG)CHM檔案製作軟體,內建簡單易用的所見即所得網頁編輯器,使你可以不必在兩個軟體之間切換,只使用一個軟體就可以完成CHM檔案的製作。軟體採用html help workshop的格式儲存和讀取,使你不在為格式不同而煩惱。增強反編譯功能,反編譯後直接可以用QuickCHM讀取,使你的工作更輕鬆。

使用工具:  TRW2000 v1.23

破解過程:

Hmemcpy 設斷,來到:

0167:005017CE  MOV      EAX,[EBP-08]
0167:005017D1  MOVZX    EAX,BYTE [EAX+ESI-01]  / * 序列號倒序送入EAX * /
0167:005017D6  ADD      EAX,EBX                / * EAX 加上 EBX * /          
0167:005017D8  MOV      ECX,FF                 / * 0xFF 送入ECX * /
0167:005017DD  CDQ    
0167:005017DE  IDIV     ECX                    / * 整除 ECX * /
0167:005017E0  MOV      EBX,EDX                / * 餘數送入 EBX * /
0167:005017E2  CMP      EDI,[EBP-10]           / * 和 0x4 比較 * /
0167:005017E5  JNL      005017EA               / * 大於就跳向 5017EA * /
0167:005017E7  INC      EDI                    / * 資料計數器加 1 * /
0167:005017E8  JMP      SHORT 005017EF
0167:005017EA  MOV      EDI,01                 / * 0x1 送入 ESI * /
0167:005017EF  MOV      EAX,[EBP-1C]
0167:005017F2  MOVZX    EAX,BYTE [EAX+EDI-01]  / * F、0、E、1 依次送入 EAX  * /
0167:005017F7  XOR      EBX,EAX                / * 和上面的餘數做異或運算 * /
0167:005017F9  LEA      EAX,[EBP-14]
0167:005017FC  PUSH     EAX
0167:005017FD  MOV      [EBP-28],EBX
0167:00501800  MOV      BYTE [EBP-24],00
0167:00501804  LEA      EDX,[EBP-28]
0167:00501807  XOR      ECX,ECX
0167:00501809  MOV      EAX,005019B8
0167:0050180E  CALL     0040A3DC               / * 正確的序列號依次輸出 * /
0167:00501813  LEA      EAX,[EBP-2C]
0167:00501816  PUSH     EAX
0167:00501817  MOV      EAX,[EBP-14]
0167:0050181A  CALL     00404D00
0167:0050181F  MOV      ECX,EAX
0167:00501821  MOV      EDX,[EBP-18]
0167:00501824  MOV      EAX,[EBP-0C]
0167:00501827  CALL     00404F60
0167:0050182C  MOV      EAX,[EBP-2C]
0167:0050182F  MOV      EDX,[EBP-14]
0167:00501832  CALL     00404E4C
0167:00501837  SETZ     [EBP-1D]
0167:0050183B  LEA      EAX,[EBP-30]
0167:0050183E  PUSH     EAX
0167:0050183F  MOV      EAX,[EBP-14]
0167:00501842  CALL     00404D00
0167:00501847  MOV      ECX,EAX
0167:00501849  MOV      EDX,[EBP-18]
0167:0050184C  MOV      EAX,[EBP-0C]
0167:0050184F  CALL     00404F60
0167:00501854  MOV      EDX,[EBP-30]
0167:00501857  MOV      EAX,[EBP-14]
0167:0050185A  CALL     00404E4C             / * 依次比較 * /
0167:0050185F  JNZ      0050186C
0167:00501861  MOV      EAX,[EBP-14]
0167:00501864  CALL     00404D00
0167:00501869  ADD      [EBP-18],EAX
0167:0050186C  DEC      ESI                  / * ESI 減 1 * /
0167:0050186D  TEST     ESI,ESI              / * 測試 ESI * /
0167:0050186F  JNZ      NEAR 005017CE        / * 不為0則向上迴圈 * /
0167:00501875  CMP      BYTE [EBP-1D],00    
0167:00501879  JZ       NEAR 00501958        / * 否則返回 * /  


最後總結:

以使用者名稱:fengma 為例:

1:取使用者名稱最後一個字母 a(0x61) ;

2:0x61 + 0x80;

3:步驟(2)的結果 MOD 0xFF ;

4:取資料 “FOE1” 的第一個字母 F,與步驟(3)做異或運算(取完則又返回地一個字母);

5:取使用者名稱倒數第二個字母 m(0x6D) ;

……

OK,這下就可以寫序號產生器了!:)


main()
{ char name[15];
 int i,a,b,c=0x80,len,temp_len,temp_data,data[4]={'F','0','E','1'};

 printf("**************************************************************\n");
 printf("*                    Quick CHM V2.4.9 Keygen                 *\n");
 printf("*                Made by fengma(fengma@2911.net)             *\n");
 printf("*                          2003-1-12                         *\n");
 printf("**************************************************************\n");

 printf("\nInput your name:");
 
 gets(name);
 len=strlen(name)-1;
 temp_len=len;
 temp_data=0;
 
 printf("\nYour number is:");
  for(i=0;i<=temp_len;i++)
  { a=name[len]+c;    
    b=(a%0xff);    
    c=b^data[temp_data];
    if(c<0x10)
      printf("0%X",c);
    else
      printf("%X",c);
    if(temp_data>=3)
temp_data=0;
    else
       temp_data++;
    len--;
  }
  printf("\n\nHave fan!\n\nBye!\n");
}

TurboC 2.0 編譯透過。

小菜鳥,不足之處,請高手指點。

風馬於 2003年1月15日凌晨5:05分

相關文章