⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 supercool bookmark 1.67.txt

📁 这是井风的破解心得
💻 TXT
字号:
软件名称:SuperCool Bookmark   main.exe 1,297KB
下载地点:http://www.supercoolbookmark.com 
发 信 人: 井  风
时    间: 2001-02-06 
破解工具:Trw20001.22
解题难度:[专  业]      [学  士]      [硕  士]      [博  士]
          ********
前    言:
             这个软件注册码计算和验证的算法思路是一种类型的代表。

             
过    程:
        1、注册窗口填入: 注册名:ABCD  注册码:12345678;
        2、用“井风跟踪”法找到出错的CALL,详细过程参见“井风”之WINZIP8.0破解教学篇;
        3、分析代码:(从后面向前分析)   

015F:004E3AC5  CMP      BYTE [EBP-16],00
015F:004E3AC9  JZ       004E3AD1
015F:004E3ACB  MOV      EAX,[EBP-28]
015F:004E3ACE  MOV      [EBP-2C],EAX
015F:004E3AD1  MOV      BYTE [EBP-16],00
015F:004E3AD5  MOV      EDI,[EBP-2C]
015F:004E3AD8  TEST     EDI,EDI
015F:004E3ADA  JNG      004E3B23
015F:004E3ADC  MOV      EBX,01
015F:004E3AE1  MOV      EAX,[EBP-14]          <****************************************
015F:004E3AE4  MOVZX    ESI,BYTE [EAX+EBX-01]<
015F:004E3AE9  MOV      EAX,[EBP-24]         <          这段代码的功能就是将注册名的
015F:004E3AEC  MOVZX    EAX,BYTE [EAX+EBX-01]<       每一位和相应注册码的每一位的ASCII
015F:004E3AF1  XOR      ESI,EAX              <       值相异或,产生字符串,提供后面的
015F:004E3AF3  LEA      EAX,[EBP-14]         <       CMP EAX,EDX数据。
015F:004E3AF6  MOV      ECX,01               <
015F:004E3AFB  MOV      EDX,EBX              <
015F:004E3AFD  CALL     004044C4             <
015F:004E3B02  MOV      EAX,ESI              <
015F:004E3B04  MOV      [EBP-15],AL          <
015F:004E3B07  LEA      EAX,[EBP-34]         <
015F:004E3B0A  MOV      DL,[EBP-15]          <
015F:004E3B0D  CALL     004041A4             <
015F:004E3B12  MOV      EAX,[EBP-34]         <
015F:004E3B15  LEA      EDX,[EBP-14]         <
015F:004E3B18  MOV      ECX,EBX              <
015F:004E3B1A  CALL     0040450C             <
015F:004E3B1F  INC      EBX                  <
015F:004E3B20  DEC      EDI                  <
015F:004E3B21  JNZ      004E3AE1             <********************************************
015F:004E3B23  LEA      EAX,[EBP-1C]
015F:004E3B26  MOV      EDX,[EBP-14]
015F:004E3B29  CALL     00404284
015F:004E3B2E  MOV      EAX,[EBP-2C]
015F:004E3B31  ADD      [EBP-10],EAX
015F:004E3B34  MOV      EAX,[EBP-10]
015F:004E3B37  CMP      EAX,[EBP-28]

    ·
    ·
    ·
015F:00404389  LEA      EAX,[EAX+00]
015F:0040438C  PUSH     EBX
015F:0040438D  PUSH     ESI
015F:0040438E  PUSH     EDI
015F:0040438F  MOV      ESI,EAX
015F:00404391  MOV      EDI,EDX
015F:00404393  CMP      EAX,EDX   [***]  <====D EAX见到以你输入信息计算的字符串 ppppU^
                                              D EDX见到字符串 CuiWei, 两串相同则不跳。
                                           那么ppppU^是如何计算出的呢,跟踪前面代码。
015F:00404395  JZ       NEAR 0040442A    <====不等则跳到**行,继儿执行*行,出错!
015F:0040439B  TEST     ESI,ESI
015F:0040439D  JZ       00404407
015F:0040439F  TEST     EDI,EDI
015F:004043A1  JZ       0040440E
015F:004043A3  MOV      EAX,[ESI-04]
015F:004043A6  MOV      EDX,[EDI-04]
015F:004043A9  SUB      EAX,EDX
015F:004043AB  JA       004043AF
015F:004043AD  ADD      EDX,EAX
015F:004043AF  PUSH     EDX
    ·
    ·
    ·
015F:00404407  MOV      EDX,[EDI-04]
015F:0040440A  SUB      EAX,EDX
015F:0040440C  JMP      SHORT 0040442A
015F:0040440E  MOV      EAX,[ESI-04]
015F:00404411  SUB      EAX,EDX
015F:00404413  JMP      SHORT 0040442A
015F:00404415  POP      EDX
015F:00404416  CMP      CL,BL
015F:00404418  JNZ      0040442A
015F:0040441A  CMP      CH,BH
015F:0040441C  JNZ      0040442A
015F:0040441E  SHR      ECX,10
015F:00404421  SHR      EBX,10
015F:00404424  CMP      CL,BL
015F:00404426  JNZ      0040442A
015F:00404428  CMP      CH,BH
015F:0040442A  POP      EDI              <====如跳到此行则执行*行,出错!
015F:0040442B  POP      ESI
015F:0040442C  POP      EBX
015F:0040442D  RET     
015F:0040442E  MOV      EAX,EAX
015F:00404430  TEST     EAX,EAX
015F:00404432  JZ       0040443E
015F:00404434  MOV      EDX,[EAX-08]
015F:00404437  INC      EDX
015F:00404438  JNG      0040443E
015F:0040443A  LOCK INC  DWORD [EAX-08]
015F:0040443E  RET     
015F:0040443F  NOP     
    ·
    ·
    ·
015F:0050ABA1  PUSH     EAX
015F:0050ABA2  MOV      EAX,[00510B54]
015F:0050ABA7  MOV      EAX,[EAX+34]
015F:0050ABAA  ADD      EAX,BYTE +3C
015F:0050ABAD  PUSH     EAX
015F:0050ABAE  MOV      CX,[0050AD10]
015F:0050ABB5  MOV      DL,01
015F:0050ABB7  MOV      EAX,0050AD70
015F:0050ABBC  CALL     0045B344             <====执行此行则出错,记作[*]
015F:0050ABC1  MOV      EAX,[EBX+0414]
015F:0050ABC7  CMP      BYTE [EAX+2C],01
015F:0050ABCB  JNZ      0050ABE6
015F:0050ABCD  PUSH     BYTE +03
015F:0050ABCF  PUSH     BYTE +00
   ·
   ·
   ·

小   结:
           注册验证方法为:将注册名的每一位与相对应的注册码的每一位的ASCII码值相异或值的与
        CuiWei比较。只要注册名第一位的ASCII与注册码第一位的ASCII异或值等于C的ASCII码,其余
        类推,相等即验证通过。

           随便拼凑一对:注册名 qCXaQX  注册码 261641
       
           另外还有一种修改数据段代码的方法:用16进制编辑器找出main.exe中的CuiWei串,用你
       在***处D EAX 见到的串取代它,那么你输入的注册名、注册码就通过了。


后   记:
        有疑问请与我联系:hz.cy@163.net

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -