飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6792|回复: 10

[原创] 捣蛋部队之--老了不中用了

[复制链接]
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-1-20 11:00:40 | 显示全部楼层 |阅读模式
    先上两幅网上的截图吧:
    84-41-18.png
    02-30-65.png
    10-21-48.png
    16-01-13.png
    这是坛内坛外注册界面的截图,软件无x天。
    一、激活码校验过程
    以下过程是为了将激活码分成两截,各自按32进制转化为整数:
    [AppleScript] 纯文本查看 复制代码
    00454211  ADD     EAX, -5
    00454214  PUSH    EAX
    00454215  PUSH    EBX
    00454216  LEA     ECX, DWORD PTR [EBP-80]
    00454219  PUSH    ECX
    0045421A  LEA     ECX, DWORD PTR [EBP-2C]
    0045421D  CALL    00411900                         ;  截取前n-1位
    00454222  MOV     BYTE PTR [EBP-4], 1
    00454226  MOV     EDX, DWORD PTR [EBP-1C]
    00454229  PUSH    5
    0045422B  ADD     EDX, -5
    0045422E  PUSH    EDX
    0045422F  LEA     EAX, DWORD PTR [EBP-9C]
    00454235  PUSH    EAX
    00454236  LEA     ECX, DWORD PTR [EBP-2C]
    00454239  CALL    00411900                         ;  截取后5位
    0045423E  MOV     BYTE PTR [EBP-4], 2
    00454242  SUB     ESP, 1C
    00454245  MOV     ECX, ESP
    00454247  MOV     DWORD PTR [EBP-C4], ESP
    0045424D  PUSH    -1
    0045424F  PUSH    EBX
    00454250  LEA     EDX, DWORD PTR [EBP-80]
    00454253  MOV     DWORD PTR [ECX+14], EDI
    00454256  MOV     DWORD PTR [ECX+10], EBX
    00454259  PUSH    EDX
    0045425A  MOV     DWORD PTR [EBP-C0], EBX
    00454260  MOV     DWORD PTR [EBP-BC], EBX
    00454266  MOV     DWORD PTR [EBP-D8], EBX
    0045426C  MOV     DWORD PTR [EBP-D4], EBX
    00454272  LEA     ESI, DWORD PTR [EBP-C0]
    00454278  MOV     BYTE PTR [ECX], BL
    0045427A  CALL    00405410                         ;  转移n-1位字符串
    0045427F  CALL    00455850                         ;  转化为整数1
    00454284  MOV     ECX, ESP
    00454286  MOV     DWORD PTR [EBP-C4], ESP
    0045428C  PUSH    -1
    0045428E  PUSH    EBX
    0045428F  LEA     EAX, DWORD PTR [EBP-9C]
    00454295  MOV     DWORD PTR [ECX+14], EDI
    00454298  MOV     DWORD PTR [ECX+10], EBX
    0045429B  PUSH    EAX
    0045429C  LEA     ESI, DWORD PTR [EBP-D8]
    004542A2  MOV     BYTE PTR [ECX], BL
    004542A4  CALL    00405410                         ;  转移5位字符串
    004542A9  CALL    00455850                         ;  转化为整数2

    以下部分检验两部分转化的整数的商是否相等:
    [AppleScript] 纯文本查看 复制代码
    004542AE  MOV     ECX, DWORD PTR [EBP-BC]          ;  整数1
    004542B4  MOV     EDX, DWORD PTR [EBP-C0]
    004542BA  ADD     ESP, 1C
    004542BD  PUSH    5AF3
    004542C2  PUSH    107A4000
    004542C7  PUSH    ECX
    004542C8  PUSH    EDX
    004542C9  CALL    005BAE10                         ;  整数1\5AF3107A4000
    004542CE  MOV     EDI, DWORD PTR [EBP-D8]
    004542D4  PUSH    0
    004542D6  PUSH    0F4240
    004542DB  MOV     DWORD PTR [EBP-C4], EBX
    004542E1  MOV     EBX, DWORD PTR [EBP-D4]
    004542E7  PUSH    EBX
    004542E8  PUSH    EDI
    004542E9  MOV     DWORD PTR [EBP-C8], ECX
    004542EF  MOV     DWORD PTR [EBP-E0], EAX          ;  保存商
    004542F5  MOV     DWORD PTR [EBP-DC], EDX
    004542FB  CALL    005AF7A0                         ;  整数2\F4240
    00454300  MOV     ECX, DWORD PTR [EBP-C4]
    00454306  PUSH    -1
    00454308  PUSH    FFF0BDC0
    0045430D  MOV     ESI, EAX
    0045430F  MOV     EAX, DWORD PTR [EBP-C8]
    00454315  PUSH    EDX
    00454316  PUSH    ESI
    00454317  MOV     DWORD PTR [EBP-C0], EAX
    0045431D  MOV     DWORD PTR [EBP-BC], ECX
    00454323  CALL    005B6050
    00454328  ADD     EDI, EAX
    0045432A  ADC     EBX, EDX
    0045432C  CMP     ESI, DWORD PTR [EBP-E0]          ;  两商比较
    00454332  JE      SHORT 00454354                   ;  相等则跳--必须相等

    在商相等的情况下,将各自的余数按格式转化为数字串:
    [AppleScript] 纯文本查看 复制代码
    00454334  LEA     ECX, DWORD PTR [EBP-9C]
    0045433A  CALL    00401B20
    0045433F  LEA     ECX, DWORD PTR [EBP-80]
    00454342  CALL    00401B20
    00454347  LEA     ECX, DWORD PTR [EBP-2C]
    0045434A  CALL    00401B20
    0045434F  JMP     004541F3
    00454354  MOV     EDX, DWORD PTR [EBP-BC]
    0045435A  MOV     EAX, DWORD PTR [EBP-C0]
    00454360  PUSH    EBX
    00454361  PUSH    EDI
    00454362  PUSH    EDX
    00454363  PUSH    EAX
    00454364  PUSH    005F2620                         ;  ASCII "%014I64d%06I64d"
    00454369  LEA     ESI, DWORD PTR [EBP-64]
    0045436C  CALL    00515EF0                         ;  转化为数字串
    00454371  ADD     ESP, 14
    00454374  PUSH    EAX
    00454375  LEA     ECX, DWORD PTR [EBP-2C]
    00454378  MOV     BYTE PTR [EBP-4], 3
    0045437C  CALL    00405390
    00454381  MOV     ECX, ESI
    00454383  MOV     BYTE PTR [EBP-4], 2
    00454387  CALL    00401B20
    0045438C  SUB     ESP, 1C
    0045438F  MOV     ECX, ESP
    00454391  MOV     DWORD PTR [EBP-C4], ESP
    00454397  PUSH    -1
    00454399  PUSH    0
    0045439B  LEA     EDX, DWORD PTR [EBP-2C]
    0045439E  MOV     DWORD PTR [ECX+14], 0F
    004543A5  MOV     DWORD PTR [ECX+10], 0
    004543AC  PUSH    EDX
    004543AD  MOV     BYTE PTR [ECX], 0

    转化完成后,求取数字串的校验值:
    [AppleScript] 纯文本查看 复制代码
    004543B0  CALL    00405410                         ;  转移
    004543B5  CALL    00455D80                         ;  求取校验值
    004543BA  ADD     ESP, 1C

    接着检验校验值是否与前面的商相等:
    [AppleScript] 纯文本查看 复制代码
    004543BD  CMP     DWORD PTR [EBP-E0], EAX          ;  校验值与前面的商比较
    004543C3  JNZ     00454334                         ;  不等则跳

    在完成上述检验之后,说明注册码基本符合要求。
    接下来完成数字串的重组与转换工作:
    [AppleScript] 纯文本查看 复制代码
    004543C9  MOV     EAX, DWORD PTR [EBP-BC]
    004543CF  MOV     ECX, DWORD PTR [EBP-C0]
    004543D5  PUSH    EAX
    004543D6  PUSH    ECX
    004543D7  PUSH    005EFD84                         ;  ASCII "%014I64d"
    004543DC  LEA     ESI, DWORD PTR [EBP-64]
    004543DF  CALL    00515EF0                         ;  整数1转化为字符串1
    004543E4  ADD     ESP, 0C
    004543E7  PUSH    EAX
    004543E8  LEA     ECX, DWORD PTR [EBP-80]
    004543EB  MOV     BYTE PTR [EBP-4], 4
    004543EF  CALL    00405390                         ;  转移
    004543F4  MOV     ECX, ESI
    004543F6  MOV     BYTE PTR [EBP-4], 2
    004543FA  CALL    00401B20
    004543FF  PUSH    EBX
    00454400  PUSH    EDI
    00454401  PUSH    005F2630                         ;  ASCII "%06I64d"
    00454406  LEA     ESI, DWORD PTR [EBP-64]
    00454409  CALL    00515EF0                         ;  整数2转化为字符串2
    0045440E  ADD     ESP, 0C
    00454411  PUSH    EAX
    00454412  LEA     ECX, DWORD PTR [EBP-9C]
    00454418  MOV     BYTE PTR [EBP-4], 5
    0045441C  CALL    00405390                         ;  转移
    00454421  MOV     ECX, ESI
    00454423  MOV     BYTE PTR [EBP-4], 2
    00454427  CALL    00401B20
    0045442C  PUSH    6                                ;  6
    0045442E  PUSH    0                                ;  0
    00454430  LEA     EDX, DWORD PTR [EBP-64]
    00454433  PUSH    EDX
    00454434  LEA     ECX, DWORD PTR [EBP-80]
    00454437  CALL    00411900                         ;  截取字符串1前6位
    0045443C  MOV     EDI, 10
    00454441  CMP     DWORD PTR [EAX+14], EDI
    00454444  JB      SHORT 00454448
    00454446  MOV     EAX, DWORD PTR [EAX]
    00454448  PUSH    EAX                              ;  结果
    00454449  CALL    005A1C35                         ;  转化为整数a= CE156=844118
    0045444E  ADD     ESP, 4
    00454451  LEA     ECX, DWORD PTR [EBP-64]
    00454454  MOV     ESI, EAX                         ;  转移
    00454456  CALL    00401B20
    0045445B  PUSH    4                                ;  4
    0045445D  PUSH    6                                ;  6
    0045445F  LEA     EAX, DWORD PTR [EBP-48]
    00454462  PUSH    EAX
    00454463  LEA     ECX, DWORD PTR [EBP-80]
    00454466  CALL    00411900                         ;  截取字符串1第7-10位
    0045446B  CMP     DWORD PTR [EAX+14], EDI
    0045446E  JB      SHORT 00454472
    00454470  MOV     EAX, DWORD PTR [EAX]
    00454472  PUSH    EAX
    00454473  CALL    005A1C35                         ;  结果转化为整数b= 11BF=4543
    00454478  MOV     ECX, DWORD PTR [EBP-D0]
    0045447E  MOV     DWORD PTR [ECX], EAX             ;  保存结果
    00454480  ADD     ESP, 4
    00454483  LEA     ECX, DWORD PTR [EBP-48]
    00454486  CALL    00401B20
    0045448B  PUSH    4                                ;  4
    0045448D  PUSH    0A                               ;  10
    0045448F  LEA     EDX, DWORD PTR [EBP-48]
    00454492  PUSH    EDX
    00454493  LEA     ECX, DWORD PTR [EBP-80]
    00454496  CALL    00411900                         ;  截取字符串1第11-14位
    0045449B  CMP     DWORD PTR [EAX+14], EDI
    0045449E  JB      SHORT 004544A2
    004544A0  MOV     EAX, DWORD PTR [EAX]
    004544A2  PUSH    EAX
    004544A3  CALL    005A1C35                         ;  结果转化为整数c= 227B=8827
    004544A8  MOV     ECX, DWORD PTR [EBP-CC]
    004544AE  MOV     DWORD PTR [ECX], EAX             ;  保存结果
    004544B0  ADD     ESP, 4
    004544B3  LEA     ECX, DWORD PTR [EBP-48]
    004544B6  CALL    00401B20
    004544BB  PUSH    2                                ;  2
    004544BD  PUSH    0                                ;  0
    004544BF  LEA     EDX, DWORD PTR [EBP-48]
    004544C2  PUSH    EDX
    004544C3  LEA     ECX, DWORD PTR [EBP-9C]
    004544C9  CALL    00411900                         ;  截取字符串2第1-2位
    004544CE  CMP     DWORD PTR [EAX+14], EDI
    004544D1  JB      SHORT 004544D5
    004544D3  MOV     EAX, DWORD PTR [EAX]
    004544D5  PUSH    EAX
    004544D6  CALL    005A1C35                         ;  转化为整数d= 5A=90
    004544DB  MOV     EDI, DWORD PTR [EBP-E4]
    004544E1  ADD     ESP, 4
    004544E4  LEA     ECX, DWORD PTR [EBP-48]
    004544E7  MOV     DWORD PTR [EDI], EAX             ;  保存结果
    004544E9  CALL    00401B20
    004544EE  MOV     EAX, 68DB8BAD
    004544F3  IMUL    ESI
    004544F5  SAR     EDX, 0C
    004544F8  MOV     ECX, EDX
    004544FA  SHR     ECX, 1F
    004544FD  ADD     ECX, EDX                         ;  a/10000=84
    004544FF  MOV     EAX, 51EB851F
    00454504  IMUL    ESI
    00454506  SAR     EDX, 5
    00454509  MOV     EAX, EDX
    0045450B  SHR     EAX, 1F
    0045450E  ADD     EAX, EDX                         ;  a/100=8441
    00454510  MOV     EDX, EAX
    00454512  IMUL    EAX, EAX, 64                     ;  8441*100=844100
    00454515  MOV     EBX, ECX
    00454517  IMUL    EBX, EBX, 64                     ;  84*100=8400
    0045451A  SUB     ESI, EAX                         ;  844118-844100=18
    0045451C  PUSH    ESI                              ;  18
    0045451D  SUB     EDX, EBX                         ;  8441-8400=41
    0045451F  PUSH    EDX                              ;  41
    00454520  PUSH    ECX                              ;  84
    00454521  PUSH    005EFA1C                         ;  ASCII "%02d-%02d-%02d"
    00454526  LEA     ESI, DWORD PTR [EBP-48]
    00454529  CALL    00515EF0                         ;  结果转化为84-41-18
    0045452E  ADD     ESP, 10
    00454531  MOV     ESI, DWORD PTR [EBP-EC]
    00454537  PUSH    EAX
    00454538  MOV     ECX, ESI
    0045453A  MOV     BYTE PTR [EBP-4], 6
    0045453E  CALL    00405390                         ;  转移
    00454543  LEA     ECX, DWORD PTR [EBP-48]
    00454546  MOV     BYTE PTR [EBP-4], 2
    0045454A  CALL    00401B20
    0045454F  MOV     EAX, DWORD PTR [EDI]             ;  字符串2前两位转化值d
    00454551  PUSH    EAX
    00454552  SUB     ESP, 1C
    00454555  MOV     ECX, ESP
    00454557  MOV     DWORD PTR [EBP-C4], ESP
    0045455D  PUSH    ESI
    0045455E  CALL    004051F0
    00454563  LEA     ECX, DWORD PTR [EBP-48]
    00454566  PUSH    ECX
    00454567  MOV     BYTE PTR [EBP-4], 7

    上述过程显示,字符串1被分解为6位、4位、4位共计14位。其中前6位又被重组为xx-xx-xx的形式。
    再来看计算数据:
    a=844118
    b=4543
    c=8827
    b+c=13370
    这些数据在图中出现在哪里,应该不难判断吧!
    可以看到,上述数据与激活码校验无关。
    接下来,准备检验激活码的后续部分了:
    [AppleScript] 纯文本查看 复制代码
    0045456B  CALL    00452FA0                         ;  计算机器码

    我们不需要知道机器码怎么来的,只需要知道如何使用机器码即可。
    [AppleScript] 纯文本查看 复制代码
    00454570  ADD     ESP, 4
    00454573  MOV     BYTE PTR [EBP-4], 8
    00454577  CMP     DWORD PTR [EAX+14], 10
    0045457B  JB      SHORT 0045457F
    0045457D  MOV     EAX, DWORD PTR [EAX]
    0045457F  MOV     EDX, DWORD PTR [EBP-CC]
    00454585  MOV     ECX, DWORD PTR [EDX]
    00454587  PUSH    ECX                              ;  8827
    00454588  MOV     ECX, DWORD PTR [EBP-D0]
    0045458E  LEA     EDX, DWORD PTR [EBP-B8]
    00454594  PUSH    EDX
    00454595  MOV     BYTE PTR [EBP-4], 9
    00454599  MOV     EDX, DWORD PTR [ECX]             ;  4543
    0045459B  MOV     ECX, EAX                         ;  机器码
    0045459D  CALL    00453BB0                         ;  计算注册码


    接下来:
    [AppleScript] 纯文本查看 复制代码
    0045456B  CALL    00452FA0                         ;  计算机器码
    00454570  ADD     ESP, 4
    00454573  MOV     BYTE PTR [EBP-4], 8
    00454577  CMP     DWORD PTR [EAX+14], 10
    0045457B  JB      SHORT 0045457F
    0045457D  MOV     EAX, DWORD PTR [EAX]
    0045457F  MOV     EDX, DWORD PTR [EBP-CC]
    00454585  MOV     ECX, DWORD PTR [EDX]             ;  
    00454587  PUSH    ECX
    00454588  MOV     ECX, DWORD PTR [EBP-D0]
    0045458E  LEA     EDX, DWORD PTR [EBP-B8]
    00454594  PUSH    EDX
    00454595  MOV     BYTE PTR [EBP-4], 9
    00454599  MOV     EDX, DWORD PTR [ECX]             ;  
    0045459B  MOV     ECX, EAX                         ;  机器码
    [font=宋体]0045459D  CALL    00453BB0                         ;  计算激活码[/font]

    以下对机器码进行操作:
    [AppleScript] 纯文本查看 复制代码
    00453C61  CALL    00405570                         ;  转移机器码
    00453C66  LEA     ESI, DWORD PTR [EBP-2C]
    00453C69  MOV     BYTE PTR [EBP-4], 1
    00453C6D  CALL    00515860                         ;  字符检测
    00453C72  CMP     DWORD PTR [EBP-1C], 0A
    00453C76  JE      SHORT 00453CC8
    00453C78  PUSH    EBX
    00453C79  MOV     ESI, 0F
    00453C7E  MOV     DWORD PTR [EDI+14], ESI
    00453C81  MOV     DWORD PTR [EDI+10], EBX
    00453C84  PUSH    005E1AB4
    00453C89  MOV     ECX, EDI
    00453C8B  MOV     BYTE PTR [EDI], 0
    00453C8E  CALL    00405570
    00453C93  CMP     DWORD PTR [EBP-18], 10
    00453C97  JB      SHORT 00453CA5
    00453C99  MOV     EDX, DWORD PTR [EBP-2C]
    00453C9C  PUSH    EDX
    00453C9D  CALL    005A14E2
    00453CA2  ADD     ESP, 4
    00453CA5  CMP     DWORD PTR [EBP+24], 10
    00453CA9  MOV     DWORD PTR [EBP-18], ESI
    00453CAC  MOV     DWORD PTR [EBP-1C], EBX
    00453CAF  MOV     BYTE PTR [EBP-2C], 0
    00453CB3  JB      SHORT 00453C39
    00453CB5  MOV     EAX, DWORD PTR [EBP+10]
    00453CB8  PUSH    EAX
    00453CB9  CALL    005A14E2
    00453CBE  ADD     ESP, 4
    00453CC1  MOV     EAX, EDI
    00453CC3  JMP     00454111
    00453CC8  PUSH    2
    00453CCA  PUSH    EBX
    00453CCB  LEA     ECX, DWORD PTR [EBP-B8]
    00453CD1  PUSH    ECX
    00453CD2  LEA     ECX, DWORD PTR [EBP-2C]
    00453CD5  CALL    00411900                         ;  截取1-2位
    00453CDA  PUSH    2
    00453CDC  PUSH    4
    00453CDE  LEA     EDX, DWORD PTR [EBP-F0]
    00453CE4  PUSH    EDX
    00453CE5  LEA     ECX, DWORD PTR [EBP-2C]
    00453CE8  MOV     BYTE PTR [EBP-4], 2
    00453CEC  CALL    00411900                         ;  截取5-6位
    00453CF1  PUSH    2
    00453CF3  PUSH    8
    00453CF5  LEA     EAX, DWORD PTR [EBP-10C]
    00453CFB  PUSH    EAX
    00453CFC  LEA     ECX, DWORD PTR [EBP-2C]
    00453CFF  MOV     BYTE PTR [EBP-4], 3
    00453D03  CALL    00411900                         ;  截取9-10位
    00453D08  MOV     BYTE PTR [EBP-4], 4
    00453D0C  MOV     EAX, DWORD PTR [EBP-B8]
    00453D12  MOV     EBX, 10
    00453D17  CMP     DWORD PTR [EBP-A4], EBX
    00453D1D  JNB     SHORT 00453D25
    00453D1F  LEA     EAX, DWORD PTR [EBP-B8]
    00453D25  PUSH    EAX
    00453D26  CALL    005A1C35                         ;  1-2位转化为整数-->a1=24
    00453D2B  ADD     ESP, 4
    00453D2E  MOV     EDI, EAX                         ;  24
    00453D30  MOV     EAX, DWORD PTR [EBP-F0]
    00453D36  CMP     DWORD PTR [EBP-DC], EBX
    00453D3C  JNB     SHORT 00453D44
    00453D3E  LEA     EAX, DWORD PTR [EBP-F0]
    00453D44  PUSH    EAX
    00453D45  CALL    005A1C35                         ;  5-6位转化为整数-->a2=24
    00453D4A  ADD     ESP, 4
    00453D4D  MOV     DWORD PTR [EBP-140], EAX         ;  24
    00453D53  MOV     EAX, DWORD PTR [EBP-10C]
    00453D59  CMP     DWORD PTR [EBP-F8], EBX
    00453D5F  JNB     SHORT 00453D67
    00453D61  LEA     EAX, DWORD PTR [EBP-10C]
    00453D67  PUSH    EAX
    00453D68  CALL    005A1C35                         ;  9-10位转化为整数-->a3=58

    以下部分将xx-xx-xx又转换回来,我们不注意他:
    [AppleScript] 纯文本查看 复制代码
    00453D6D  ADD     ESP, 4
    00453D70  PUSH    2                                ;  2
    00453D72  PUSH    0                                ;  0
    00453D74  LEA     ECX, DWORD PTR [EBP-D4]
    00453D7A  PUSH    ECX
    00453D7B  LEA     ECX, DWORD PTR [EBP+10]          ;  99-51-28
    00453D7E  MOV     DWORD PTR [EBP-148], EAX         ;  58
    00453D84  CALL    00411900                         ;  99
    00453D89  PUSH    2                                ;  2
    00453D8B  PUSH    3                                ;  3
    00453D8D  LEA     EDX, DWORD PTR [EBP-9C]
    00453D93  PUSH    EDX
    00453D94  LEA     ECX, DWORD PTR [EBP+10]
    00453D97  MOV     BYTE PTR [EBP-4], 5
    00453D9B  CALL    00411900                         ;  51
    00453DA0  PUSH    2                                ;  2
    00453DA2  PUSH    6                                ;  6
    00453DA4  LEA     EAX, DWORD PTR [EBP-80]
    00453DA7  PUSH    EAX
    00453DA8  LEA     ECX, DWORD PTR [EBP+10]
    00453DAB  MOV     BYTE PTR [EBP-4], 6
    00453DAF  CALL    00411900                         ;  28
    00453DB4  MOV     BYTE PTR [EBP-4], 7
    00453DB8  MOV     EAX, DWORD PTR [EBP-D4]
    00453DBE  CMP     DWORD PTR [EBP-C0], EBX
    00453DC4  JNB     SHORT 00453DCC
    00453DC6  LEA     EAX, DWORD PTR [EBP-D4]
    00453DCC  PUSH    EAX
    00453DCD  CALL    005A1C35                         ;  99-->b1=99
    00453DD2  ADD     ESP, 4
    00453DD5  MOV     ESI, EAX
    00453DD7  MOV     EAX, DWORD PTR [EBP-9C]
    00453DDD  CMP     DWORD PTR [EBP-88], EBX
    00453DE3  JNB     SHORT 00453DEB
    00453DE5  LEA     EAX, DWORD PTR [EBP-9C]
    00453DEB  PUSH    EAX
    00453DEC  CALL    005A1C35                         ;  51-->b2=51
    00453DF1  ADD     ESP, 4
    00453DF4  CMP     DWORD PTR [EBP-6C], 10
    00453DF8  MOV     EBX, EAX
    00453DFA  MOV     EAX, DWORD PTR [EBP-80]
    00453DFD  JNB     SHORT 00453E02
    00453DFF  LEA     EAX, DWORD PTR [EBP-80]
    00453E02  PUSH    EAX
    00453E03  CALL    005A1C35                         ;  28-->b3=28
    00453E08  IMUL    ESI, ESI, 64                     ;  99*100
    00453E0B  IMUL    EDI, EDI, 0B                     ;  a1*11=24*11=264
    00453E0E  ADD     EDI, DWORD PTR [EBP-148]         ;  264+58=322
    00453E14  MOV     ECX, DWORD PTR [EBP-144]         ;  9963
    00453E1A  ADD     EDI, DWORD PTR [EBP-140]         ;  322+24=346
    00453E20  MOV     EDX, DWORD PTR [EBP-134]         ;  7016
    00453E26  ADD     ESI, EBX                         ;  99*100+51
    00453E28  IMUL    ESI, ESI, 64                     ;  (99*100+51)*100
    00453E2B  PUSH    ECX                              ;  9963
    00453E2C  ADD     ESI, EAX                         ;  (99*100+51)*100+28=995128
    00453E2E  PUSH    EDX                              ;  7016
    00453E2F  ADD     EDI, EDI
    00453E31  PUSH    ESI
    00453E32  ADD     EDI, EDI
    00453E34  PUSH    005F2604                         ;  ASCII "%06d%04d%04d"
    00453E39  LEA     ESI, DWORD PTR [EBP-64]
    00453E3C  ADD     EDI, EDI                         ;  346*8=2768

    以上这部分两种数据混合计算,但其中关键计算部分是:
    (a1*11+a3+a2)*8=2768(我的数据)。
    [AppleScript] 纯文本查看 复制代码
    00453E3E  CALL    00515EF0                         ;  -->99512870169963
    00453E43  MOV     EAX, DWORD PTR [EBP-12C]         ;  d
    00453E49  PUSH    EDI
    00453E4A  PUSH    EAX
    00453E4B  PUSH    005F2614                         ;  ASCII "%02d%04d"
    00453E50  LEA     ESI, DWORD PTR [EBP-48]
    00453E53  MOV     BYTE PTR [EBP-4], 8
    00453E57  CALL    00515EF0                         ;  d和2768按格式转换为数字串-->972768

    注意到,这个数字串是6位的。
    后面的部分记述略乱,后面给以总结:
    [AppleScript] 纯文本查看 复制代码
    00453E5C  ADD     ESP, 20
    00453E5F  MOV     BYTE PTR [EBP-4], 9
    00453E63  MOV     EAX, DWORD PTR [EBP-64]
    00453E66  MOV     EDI, 10
    00453E6B  CMP     DWORD PTR [EBP-50], EDI
    00453E6E  JNB     SHORT 00453E73
    00453E70  LEA     EAX, DWORD PTR [EBP-64]
    00453E73  PUSH    EAX
    00453E74  CALL    005A1C40                         ;  99512870169963转化为整数
    00453E79  MOV     ESI, EAX
    00453E7B  MOV     EAX, DWORD PTR [EBP-48]
    00453E7E  ADD     ESP, 4
    00453E81  MOV     DWORD PTR [EBP-138], ESI         ;  保存
    00453E87  MOV     DWORD PTR [EBP-134], EDX
    00453E8D  CMP     DWORD PTR [EBP-34], EDI
    00453E90  JNB     SHORT 00453E95
    00453E92  LEA     EAX, DWORD PTR [EBP-48]
    00453E95  PUSH    EAX
    00453E96  CALL    005A1C40                         ;  972768转化为整数
    00453E9B  MOV     ECX, DWORD PTR [EBP-134]
    00453EA1  MOV     EBX, EDX
    00453EA3  PUSH    EBX
    00453EA4  MOV     EDI, EAX
    00453EA6  PUSH    EDI
    00453EA7  PUSH    ECX
    00453EA8  PUSH    ESI
    00453EA9  PUSH    005F2620                         ;  ASCII "%014I64d%06I64d"
    00453EAE  LEA     ESI, DWORD PTR [EBP-128]
    00453EB4  CALL    00515EF0                         ;  合并为 99512870169963972768
    00453EB9  PUSH    ECX
    00453EBA  MOV     ECX, ESP
    00453EBC  MOV     DWORD PTR [EBP-12C], ESP
    00453EC2  PUSH    -1
    00453EC4  MOV     BYTE PTR [EBP-4], 0A
    00453EC8  PUSH    0
    00453ECA  MOV     EDX, ESI
    00453ECC  MOV     DWORD PTR [ECX+14], 0F
    00453ED3  MOV     DWORD PTR [ECX+10], 0
    00453EDA  PUSH    EDX
    00453EDB  MOV     BYTE PTR [ECX], 0
    00453EDE  CALL    00405410                         ;  转移结果
    00453EE3  CALL    00455D80                         ;  计算校验值
    00453EE8  ADD     ESP, 1C
    00453EEB  CDQ
    00453EEC  PUSH    0
    00453EEE  MOV     ESI, EAX                         ;  校验值
    00453EF0  PUSH    005E1AB4
    00453EF5  LEA     ECX, DWORD PTR [EBP-64]          ;  长字符串
    00453EF8  MOV     DWORD PTR [EBP-130], ESI
    00453EFE  MOV     DWORD PTR [EBP-12C], EDX
    00453F04  CALL    00405570
    00453F09  PUSH    0
    00453F0B  PUSH    005E1AB4
    00453F10  LEA     ECX, DWORD PTR [EBP-48]          ;  短字符串
    00453F13  CALL    00405570
    00453F18  MOV     EAX, DWORD PTR [EBP-12C]
    00453F1E  PUSH    5AF3
    00453F23  PUSH    107A4000
    00453F28  PUSH    EAX
    00453F29  PUSH    ESI                              ;  3
    00453F2A  CALL    005B6050                         ;  3*100000000000000
    00453F2F  ADD     EAX, DWORD PTR [EBP-138]
    00453F35  LEA     ESI, DWORD PTR [EBP-64]
    00453F38  ADC     EDX, DWORD PTR [EBP-134]
    00453F3E  PUSH    EDX
    00453F3F  PUSH    EAX
    00453F40  CALL    00455600                         ;  -->AAAAAAAAAA
    00453F45  MOV     ECX, DWORD PTR [EBP-12C]
    00453F4B  MOV     EDX, DWORD PTR [EBP-130]
    00453F51  ADD     ESP, 8
    00453F54  PUSH    0
    00453F56  PUSH    0F4240
    00453F5B  PUSH    ECX
    00453F5C  PUSH    EDX                              ;  3
    00453F5D  CALL    005B6050                         ;  3*1000000
    00453F62  ADD     EAX, EDI
    00453F64  ADC     EDX, EBX
    00453F66  PUSH    EDX
    00453F67  PUSH    EAX
    00453F68  LEA     ESI, DWORD PTR [EBP-48]
    00453F6B  CALL    00455600                         ;  -->3N7VL
    00453F70  MOV     EDX, DWORD PTR [EBP-13C]
    00453F76  MOV     EAX, ESI
    00453F78  PUSH    EAX
    00453F79  LEA     ECX, DWORD PTR [EBP-64]
    00453F7C  PUSH    ECX
    00453F7D  PUSH    EDX
    00453F7E  CALL    00416210                         ;  组合
    0012E140   0012E2F0   ASCII "AAAAAAAAAA3N7VL"

    总结:
    1、激活码中的数字串划分为两部分,14位和6位。14位与机器码无关,6位中的后四位由机器码而来。
    2、由这20位组合起来计算校验码。
    3、完成校验码计算后,数字串形如:校验码&14位&校验码&6位。
    4、按32进制将上述数字串转换为字符串,即为注册码。
    二、激活码姓甚名谁
    用OD搜索字符串,可得到如下内容:
    [AppleScript] 纯文本查看 复制代码
    0043D9D4   PUSH    005F697C                          您的产品总共支持%d个用户数。
    0043D9F2   PUSH    005F696C                          %
    0043DA26   PUSH    005F699C                          您的产品支持%d个用户数,其中的%d个已在%s失效。
    0043DA72   PUSH    005F696C                          %
    0043DAA8   PUSH    005F69CC                          您的产品总共支持%d个用户数,其中的%d个将于%s失效。
    0043DB7D   PUSH    005F6A14                          您的使用的是试用版本,共支持%d个用户数
    0043DC36   PUSH    005F6A58                          您的试用期将在%d天后结束, 共支持%d个用户数

    将图片中的数据填入其中,得到如下表述:
    您的产品总共支持13370个用户数,其中的4543个将于84-41-18失效。
    您的产品总共支持3209个用户数,其中的1770个将于10-21-48失效。
    您的产品支持9424个用户数,其中的7173个已在02-30-65失效。
    您的产品支持999个用户数,其中的1个已在16-01-13失效。
    那组数据你能看明白?有没有贻笑大方的感觉?
    其实呢,激活码的前n-5的内容虽然与机器码无关,但却是授权数据,不是随便给出的。具体分解如下:
    14位数字串划分为6位、4位、4位。格式为:受限到期日期 受限用户数 不受限制用户数。受限用户数+不受限制用户数=总共支持的用户数。
    [AppleScript] 纯文本查看 复制代码
    84-41-18=2084年41月18日
    10-21-48=2010年21月48日
    02-30-65=2002年30月65日

    笑料吧?!制作注册机,你可别留下话柄,干土匪干的事。而:
    [AppleScript] 纯文本查看 复制代码
    16-01-13=2016年01月13日

    另外,受限和不受限制用户数最多9999。
    还注意到,后6位数字串中只有后4位于机器码有关,那前2位呢?凑数的呗!
    故组成激活码的数字串应该为:校验码&受限到期日期&受限用户数&不受限制用户数&校验码&任意两位数字&机器码结果
    三、验证机制是否有问题
    因为未对机器码的计算过程进行跟踪,所以不知道计算机器码的时候是否做了限制。如果没有的话,则注册机制是有问题的。
    验证过程中,从机器码中获取了三个数据a1、a2、a3,对这三个数据的计算就是:
    (a1*11+a3+a2)*8=位数字,四位数字最大为9999。不妨假设a1=a2=a3,则由13*a1*8=104*a1>9999-->a1>=97。只要a1在97-99之间取值,似乎验证就难以通过,除非格式%04d能够掐头。但反正我没见过,你见过?

    评分

    参与人数 4飘云币 +84 收起 理由
    飞天 + 4 PYG有你更精彩!
    GeekCat + 20 赞一个!
    [PYG]版务督察 + 40 PYG有你更精彩!
    tree_fly + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情

    2022-9-4 21:29
  • 签到天数: 1756 天

    [LV.Master]伴坛终老

    发表于 2016-1-20 12:32:14 | 显示全部楼层
    膜拜下,学习了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-5-9 10:29
  • 签到天数: 72 天

    [LV.6]常住居民II

    发表于 2016-1-20 13:21:42 | 显示全部楼层
    学习了,膜拜下~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 2118 天

    [LV.Master]伴坛终老

    发表于 2016-1-20 13:34:16 | 显示全部楼层
    给力,值得学习研究。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 08:00
  • 签到天数: 971 天

    [LV.10]以坛为家III

    发表于 2016-1-20 16:52:41 | 显示全部楼层
    这是什么软件
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2016-1-20 19:24:22 | 显示全部楼层
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    前天 09:13
  • 签到天数: 977 天

    [LV.10]以坛为家III

    发表于 2016-1-21 16:02:58 | 显示全部楼层
    这个软件做什么用的?
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    昨天 09:06
  • 签到天数: 771 天

    [LV.10]以坛为家III

    发表于 2016-1-25 10:41:31 | 显示全部楼层
    膜拜下,学习了
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2016-6-22 14:58
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2016-1-26 08:30:10 来自手机 | 显示全部楼层
    什么意识?时间短么?
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表