DaShanRen 发表于 2016-1-20 11:00:40

捣蛋部队之--老了不中用了

先上两幅网上的截图吧:




这是坛内坛外注册界面的截图,软件无x天。
一、激活码校验过程
以下过程是为了将激活码分成两截,各自按32进制转化为整数:
00454211ADD   EAX, -5
00454214PUSH    EAX
00454215PUSH    EBX
00454216LEA   ECX, DWORD PTR
00454219PUSH    ECX
0045421ALEA   ECX, DWORD PTR
0045421DCALL    00411900                         ;截取前n-1位
00454222MOV   BYTE PTR , 1
00454226MOV   EDX, DWORD PTR
00454229PUSH    5
0045422BADD   EDX, -5
0045422EPUSH    EDX
0045422FLEA   EAX, DWORD PTR
00454235PUSH    EAX
00454236LEA   ECX, DWORD PTR
00454239CALL    00411900                         ;截取后5位
0045423EMOV   BYTE PTR , 2
00454242SUB   ESP, 1C
00454245MOV   ECX, ESP
00454247MOV   DWORD PTR , ESP
0045424DPUSH    -1
0045424FPUSH    EBX
00454250LEA   EDX, DWORD PTR
00454253MOV   DWORD PTR , EDI
00454256MOV   DWORD PTR , EBX
00454259PUSH    EDX
0045425AMOV   DWORD PTR , EBX
00454260MOV   DWORD PTR , EBX
00454266MOV   DWORD PTR , EBX
0045426CMOV   DWORD PTR , EBX
00454272LEA   ESI, DWORD PTR
00454278MOV   BYTE PTR , BL
0045427ACALL    00405410                         ;转移n-1位字符串
0045427FCALL    00455850                         ;转化为整数1
00454284MOV   ECX, ESP
00454286MOV   DWORD PTR , ESP
0045428CPUSH    -1
0045428EPUSH    EBX
0045428FLEA   EAX, DWORD PTR
00454295MOV   DWORD PTR , EDI
00454298MOV   DWORD PTR , EBX
0045429BPUSH    EAX
0045429CLEA   ESI, DWORD PTR
004542A2MOV   BYTE PTR , BL
004542A4CALL    00405410                         ;转移5位字符串
004542A9CALL    00455850                         ;转化为整数2
以下部分检验两部分转化的整数的商是否相等:
004542AEMOV   ECX, DWORD PTR           ;整数1
004542B4MOV   EDX, DWORD PTR
004542BAADD   ESP, 1C
004542BDPUSH    5AF3
004542C2PUSH    107A4000
004542C7PUSH    ECX
004542C8PUSH    EDX
004542C9CALL    005BAE10                         ;整数1\5AF3107A4000
004542CEMOV   EDI, DWORD PTR
004542D4PUSH    0
004542D6PUSH    0F4240
004542DBMOV   DWORD PTR , EBX
004542E1MOV   EBX, DWORD PTR
004542E7PUSH    EBX
004542E8PUSH    EDI
004542E9MOV   DWORD PTR , ECX
004542EFMOV   DWORD PTR , EAX          ;保存商
004542F5MOV   DWORD PTR , EDX
004542FBCALL    005AF7A0                         ;整数2\F4240
00454300MOV   ECX, DWORD PTR
00454306PUSH    -1
00454308PUSH    FFF0BDC0
0045430DMOV   ESI, EAX
0045430FMOV   EAX, DWORD PTR
00454315PUSH    EDX
00454316PUSH    ESI
00454317MOV   DWORD PTR , EAX
0045431DMOV   DWORD PTR , ECX
00454323CALL    005B6050
00454328ADD   EDI, EAX
0045432AADC   EBX, EDX
0045432CCMP   ESI, DWORD PTR           ;两商比较
00454332JE      SHORT 00454354                   ;相等则跳--必须相等
在商相等的情况下,将各自的余数按格式转化为数字串:
00454334LEA   ECX, DWORD PTR
0045433ACALL    00401B20
0045433FLEA   ECX, DWORD PTR
00454342CALL    00401B20
00454347LEA   ECX, DWORD PTR
0045434ACALL    00401B20
0045434FJMP   004541F3
00454354MOV   EDX, DWORD PTR
0045435AMOV   EAX, DWORD PTR
00454360PUSH    EBX
00454361PUSH    EDI
00454362PUSH    EDX
00454363PUSH    EAX
00454364PUSH    005F2620                         ;ASCII "%014I64d%06I64d"
00454369LEA   ESI, DWORD PTR
0045436CCALL    00515EF0                         ;转化为数字串
00454371ADD   ESP, 14
00454374PUSH    EAX
00454375LEA   ECX, DWORD PTR
00454378MOV   BYTE PTR , 3
0045437CCALL    00405390
00454381MOV   ECX, ESI
00454383MOV   BYTE PTR , 2
00454387CALL    00401B20
0045438CSUB   ESP, 1C
0045438FMOV   ECX, ESP
00454391MOV   DWORD PTR , ESP
00454397PUSH    -1
00454399PUSH    0
0045439BLEA   EDX, DWORD PTR
0045439EMOV   DWORD PTR , 0F
004543A5MOV   DWORD PTR , 0
004543ACPUSH    EDX
004543ADMOV   BYTE PTR , 0
转化完成后,求取数字串的校验值:
004543B0CALL    00405410                         ;转移
004543B5CALL    00455D80                         ;求取校验值
004543BAADD   ESP, 1C
接着检验校验值是否与前面的商相等:
004543BDCMP   DWORD PTR , EAX          ;校验值与前面的商比较
004543C3JNZ   00454334                         ;不等则跳
在完成上述检验之后,说明注册码基本符合要求。
接下来完成数字串的重组与转换工作:
004543C9MOV   EAX, DWORD PTR
004543CFMOV   ECX, DWORD PTR
004543D5PUSH    EAX
004543D6PUSH    ECX
004543D7PUSH    005EFD84                         ;ASCII "%014I64d"
004543DCLEA   ESI, DWORD PTR
004543DFCALL    00515EF0                         ;整数1转化为字符串1
004543E4ADD   ESP, 0C
004543E7PUSH    EAX
004543E8LEA   ECX, DWORD PTR
004543EBMOV   BYTE PTR , 4
004543EFCALL    00405390                         ;转移
004543F4MOV   ECX, ESI
004543F6MOV   BYTE PTR , 2
004543FACALL    00401B20
004543FFPUSH    EBX
00454400PUSH    EDI
00454401PUSH    005F2630                         ;ASCII "%06I64d"
00454406LEA   ESI, DWORD PTR
00454409CALL    00515EF0                         ;整数2转化为字符串2
0045440EADD   ESP, 0C
00454411PUSH    EAX
00454412LEA   ECX, DWORD PTR
00454418MOV   BYTE PTR , 5
0045441CCALL    00405390                         ;转移
00454421MOV   ECX, ESI
00454423MOV   BYTE PTR , 2
00454427CALL    00401B20
0045442CPUSH    6                              ;6
0045442EPUSH    0                              ;0
00454430LEA   EDX, DWORD PTR
00454433PUSH    EDX
00454434LEA   ECX, DWORD PTR
00454437CALL    00411900                         ;截取字符串1前6位
0045443CMOV   EDI, 10
00454441CMP   DWORD PTR , EDI
00454444JB      SHORT 00454448
00454446MOV   EAX, DWORD PTR
00454448PUSH    EAX                              ;结果
00454449CALL    005A1C35                         ;转化为整数a= CE156=844118
0045444EADD   ESP, 4
00454451LEA   ECX, DWORD PTR
00454454MOV   ESI, EAX                         ;转移
00454456CALL    00401B20
0045445BPUSH    4                              ;4
0045445DPUSH    6                              ;6
0045445FLEA   EAX, DWORD PTR
00454462PUSH    EAX
00454463LEA   ECX, DWORD PTR
00454466CALL    00411900                         ;截取字符串1第7-10位
0045446BCMP   DWORD PTR , EDI
0045446EJB      SHORT 00454472
00454470MOV   EAX, DWORD PTR
00454472PUSH    EAX
00454473CALL    005A1C35                         ;结果转化为整数b= 11BF=4543
00454478MOV   ECX, DWORD PTR
0045447EMOV   DWORD PTR , EAX             ;保存结果
00454480ADD   ESP, 4
00454483LEA   ECX, DWORD PTR
00454486CALL    00401B20
0045448BPUSH    4                              ;4
0045448DPUSH    0A                               ;10
0045448FLEA   EDX, DWORD PTR
00454492PUSH    EDX
00454493LEA   ECX, DWORD PTR
00454496CALL    00411900                         ;截取字符串1第11-14位
0045449BCMP   DWORD PTR , EDI
0045449EJB      SHORT 004544A2
004544A0MOV   EAX, DWORD PTR
004544A2PUSH    EAX
004544A3CALL    005A1C35                         ;结果转化为整数c= 227B=8827
004544A8MOV   ECX, DWORD PTR
004544AEMOV   DWORD PTR , EAX             ;保存结果
004544B0ADD   ESP, 4
004544B3LEA   ECX, DWORD PTR
004544B6CALL    00401B20
004544BBPUSH    2                              ;2
004544BDPUSH    0                              ;0
004544BFLEA   EDX, DWORD PTR
004544C2PUSH    EDX
004544C3LEA   ECX, DWORD PTR
004544C9CALL    00411900                         ;截取字符串2第1-2位
004544CECMP   DWORD PTR , EDI
004544D1JB      SHORT 004544D5
004544D3MOV   EAX, DWORD PTR
004544D5PUSH    EAX
004544D6CALL    005A1C35                         ;转化为整数d= 5A=90
004544DBMOV   EDI, DWORD PTR
004544E1ADD   ESP, 4
004544E4LEA   ECX, DWORD PTR
004544E7MOV   DWORD PTR , EAX             ;保存结果
004544E9CALL    00401B20
004544EEMOV   EAX, 68DB8BAD
004544F3IMUL    ESI
004544F5SAR   EDX, 0C
004544F8MOV   ECX, EDX
004544FASHR   ECX, 1F
004544FDADD   ECX, EDX                         ;a/10000=84
004544FFMOV   EAX, 51EB851F
00454504IMUL    ESI
00454506SAR   EDX, 5
00454509MOV   EAX, EDX
0045450BSHR   EAX, 1F
0045450EADD   EAX, EDX                         ;a/100=8441
00454510MOV   EDX, EAX
00454512IMUL    EAX, EAX, 64                     ;8441*100=844100
00454515MOV   EBX, ECX
00454517IMUL    EBX, EBX, 64                     ;84*100=8400
0045451ASUB   ESI, EAX                         ;844118-844100=18
0045451CPUSH    ESI                              ;18
0045451DSUB   EDX, EBX                         ;8441-8400=41
0045451FPUSH    EDX                              ;41
00454520PUSH    ECX                              ;84
00454521PUSH    005EFA1C                         ;ASCII "%02d-%02d-%02d"
00454526LEA   ESI, DWORD PTR
00454529CALL    00515EF0                         ;结果转化为84-41-18
0045452EADD   ESP, 10
00454531MOV   ESI, DWORD PTR
00454537PUSH    EAX
00454538MOV   ECX, ESI
0045453AMOV   BYTE PTR , 6
0045453ECALL    00405390                         ;转移
00454543LEA   ECX, DWORD PTR
00454546MOV   BYTE PTR , 2
0045454ACALL    00401B20
0045454FMOV   EAX, DWORD PTR              ;字符串2前两位转化值d
00454551PUSH    EAX
00454552SUB   ESP, 1C
00454555MOV   ECX, ESP
00454557MOV   DWORD PTR , ESP
0045455DPUSH    ESI
0045455ECALL    004051F0
00454563LEA   ECX, DWORD PTR
00454566PUSH    ECX
00454567MOV   BYTE PTR , 7
上述过程显示,字符串1被分解为6位、4位、4位共计14位。其中前6位又被重组为xx-xx-xx的形式。
再来看计算数据:
a=844118
b=4543
c=8827
b+c=13370
这些数据在图中出现在哪里,应该不难判断吧!
可以看到,上述数据与激活码校验无关。
接下来,准备检验激活码的后续部分了:
0045456BCALL    00452FA0                         ;计算机器码
我们不需要知道机器码怎么来的,只需要知道如何使用机器码即可。
00454570ADD   ESP, 4
00454573MOV   BYTE PTR , 8
00454577CMP   DWORD PTR , 10
0045457BJB      SHORT 0045457F
0045457DMOV   EAX, DWORD PTR
0045457FMOV   EDX, DWORD PTR
00454585MOV   ECX, DWORD PTR
00454587PUSH    ECX                              ;8827
00454588MOV   ECX, DWORD PTR
0045458ELEA   EDX, DWORD PTR
00454594PUSH    EDX
00454595MOV   BYTE PTR , 9
00454599MOV   EDX, DWORD PTR              ;4543
0045459BMOV   ECX, EAX                         ;机器码
0045459DCALL    00453BB0                         ;计算注册码

接下来:
0045456BCALL    00452FA0                         ;计算机器码
00454570ADD   ESP, 4
00454573MOV   BYTE PTR , 8
00454577CMP   DWORD PTR , 10
0045457BJB      SHORT 0045457F
0045457DMOV   EAX, DWORD PTR
0045457FMOV   EDX, DWORD PTR
00454585MOV   ECX, DWORD PTR              ;
00454587PUSH    ECX
00454588MOV   ECX, DWORD PTR
0045458ELEA   EDX, DWORD PTR
00454594PUSH    EDX
00454595MOV   BYTE PTR , 9
00454599MOV   EDX, DWORD PTR              ;
0045459BMOV   ECX, EAX                         ;机器码
0045459DCALL    00453BB0                         ;计算激活码
以下对机器码进行操作:
00453C61CALL    00405570                         ;转移机器码
00453C66LEA   ESI, DWORD PTR
00453C69MOV   BYTE PTR , 1
00453C6DCALL    00515860                         ;字符检测
00453C72CMP   DWORD PTR , 0A
00453C76JE      SHORT 00453CC8
00453C78PUSH    EBX
00453C79MOV   ESI, 0F
00453C7EMOV   DWORD PTR , ESI
00453C81MOV   DWORD PTR , EBX
00453C84PUSH    005E1AB4
00453C89MOV   ECX, EDI
00453C8BMOV   BYTE PTR , 0
00453C8ECALL    00405570
00453C93CMP   DWORD PTR , 10
00453C97JB      SHORT 00453CA5
00453C99MOV   EDX, DWORD PTR
00453C9CPUSH    EDX
00453C9DCALL    005A14E2
00453CA2ADD   ESP, 4
00453CA5CMP   DWORD PTR , 10
00453CA9MOV   DWORD PTR , ESI
00453CACMOV   DWORD PTR , EBX
00453CAFMOV   BYTE PTR , 0
00453CB3JB      SHORT 00453C39
00453CB5MOV   EAX, DWORD PTR
00453CB8PUSH    EAX
00453CB9CALL    005A14E2
00453CBEADD   ESP, 4
00453CC1MOV   EAX, EDI
00453CC3JMP   00454111
00453CC8PUSH    2
00453CCAPUSH    EBX
00453CCBLEA   ECX, DWORD PTR
00453CD1PUSH    ECX
00453CD2LEA   ECX, DWORD PTR
00453CD5CALL    00411900                         ;截取1-2位
00453CDAPUSH    2
00453CDCPUSH    4
00453CDELEA   EDX, DWORD PTR
00453CE4PUSH    EDX
00453CE5LEA   ECX, DWORD PTR
00453CE8MOV   BYTE PTR , 2
00453CECCALL    00411900                         ;截取5-6位
00453CF1PUSH    2
00453CF3PUSH    8
00453CF5LEA   EAX, DWORD PTR
00453CFBPUSH    EAX
00453CFCLEA   ECX, DWORD PTR
00453CFFMOV   BYTE PTR , 3
00453D03CALL    00411900                         ;截取9-10位
00453D08MOV   BYTE PTR , 4
00453D0CMOV   EAX, DWORD PTR
00453D12MOV   EBX, 10
00453D17CMP   DWORD PTR , EBX
00453D1DJNB   SHORT 00453D25
00453D1FLEA   EAX, DWORD PTR
00453D25PUSH    EAX
00453D26CALL    005A1C35                         ;1-2位转化为整数-->a1=24
00453D2BADD   ESP, 4
00453D2EMOV   EDI, EAX                         ;24
00453D30MOV   EAX, DWORD PTR
00453D36CMP   DWORD PTR , EBX
00453D3CJNB   SHORT 00453D44
00453D3ELEA   EAX, DWORD PTR
00453D44PUSH    EAX
00453D45CALL    005A1C35                         ;5-6位转化为整数-->a2=24
00453D4AADD   ESP, 4
00453D4DMOV   DWORD PTR , EAX         ;24
00453D53MOV   EAX, DWORD PTR
00453D59CMP   DWORD PTR , EBX
00453D5FJNB   SHORT 00453D67
00453D61LEA   EAX, DWORD PTR
00453D67PUSH    EAX
00453D68CALL    005A1C35                         ;9-10位转化为整数-->a3=58
以下部分将xx-xx-xx又转换回来,我们不注意他:
00453D6DADD   ESP, 4
00453D70PUSH    2                              ;2
00453D72PUSH    0                              ;0
00453D74LEA   ECX, DWORD PTR
00453D7APUSH    ECX
00453D7BLEA   ECX, DWORD PTR           ;99-51-28
00453D7EMOV   DWORD PTR , EAX         ;58
00453D84CALL    00411900                         ;99
00453D89PUSH    2                              ;2
00453D8BPUSH    3                              ;3
00453D8DLEA   EDX, DWORD PTR
00453D93PUSH    EDX
00453D94LEA   ECX, DWORD PTR
00453D97MOV   BYTE PTR , 5
00453D9BCALL    00411900                         ;51
00453DA0PUSH    2                              ;2
00453DA2PUSH    6                              ;6
00453DA4LEA   EAX, DWORD PTR
00453DA7PUSH    EAX
00453DA8LEA   ECX, DWORD PTR
00453DABMOV   BYTE PTR , 6
00453DAFCALL    00411900                         ;28
00453DB4MOV   BYTE PTR , 7
00453DB8MOV   EAX, DWORD PTR
00453DBECMP   DWORD PTR , EBX
00453DC4JNB   SHORT 00453DCC
00453DC6LEA   EAX, DWORD PTR
00453DCCPUSH    EAX
00453DCDCALL    005A1C35                         ;99-->b1=99
00453DD2ADD   ESP, 4
00453DD5MOV   ESI, EAX
00453DD7MOV   EAX, DWORD PTR
00453DDDCMP   DWORD PTR , EBX
00453DE3JNB   SHORT 00453DEB
00453DE5LEA   EAX, DWORD PTR
00453DEBPUSH    EAX
00453DECCALL    005A1C35                         ;51-->b2=51
00453DF1ADD   ESP, 4
00453DF4CMP   DWORD PTR , 10
00453DF8MOV   EBX, EAX
00453DFAMOV   EAX, DWORD PTR
00453DFDJNB   SHORT 00453E02
00453DFFLEA   EAX, DWORD PTR
00453E02PUSH    EAX
00453E03CALL    005A1C35                         ;28-->b3=28
00453E08IMUL    ESI, ESI, 64                     ;99*100
00453E0BIMUL    EDI, EDI, 0B                     ;a1*11=24*11=264
00453E0EADD   EDI, DWORD PTR          ;264+58=322
00453E14MOV   ECX, DWORD PTR          ;9963
00453E1AADD   EDI, DWORD PTR          ;322+24=346
00453E20MOV   EDX, DWORD PTR          ;7016
00453E26ADD   ESI, EBX                         ;99*100+51
00453E28IMUL    ESI, ESI, 64                     ;(99*100+51)*100
00453E2BPUSH    ECX                              ;9963
00453E2CADD   ESI, EAX                         ;(99*100+51)*100+28=995128
00453E2EPUSH    EDX                              ;7016
00453E2FADD   EDI, EDI
00453E31PUSH    ESI
00453E32ADD   EDI, EDI
00453E34PUSH    005F2604                         ;ASCII "%06d%04d%04d"
00453E39LEA   ESI, DWORD PTR
00453E3CADD   EDI, EDI                         ;346*8=2768
以上这部分两种数据混合计算,但其中关键计算部分是:
(a1*11+a3+a2)*8=2768(我的数据)。
00453E3ECALL    00515EF0                         ;-->99512870169963
00453E43MOV   EAX, DWORD PTR          ;d
00453E49PUSH    EDI
00453E4APUSH    EAX
00453E4BPUSH    005F2614                         ;ASCII "%02d%04d"
00453E50LEA   ESI, DWORD PTR
00453E53MOV   BYTE PTR , 8
00453E57CALL    00515EF0                         ;d和2768按格式转换为数字串-->972768
注意到,这个数字串是6位的。
后面的部分记述略乱,后面给以总结:
00453E5CADD   ESP, 20
00453E5FMOV   BYTE PTR , 9
00453E63MOV   EAX, DWORD PTR
00453E66MOV   EDI, 10
00453E6BCMP   DWORD PTR , EDI
00453E6EJNB   SHORT 00453E73
00453E70LEA   EAX, DWORD PTR
00453E73PUSH    EAX
00453E74CALL    005A1C40                         ;99512870169963转化为整数
00453E79MOV   ESI, EAX
00453E7BMOV   EAX, DWORD PTR
00453E7EADD   ESP, 4
00453E81MOV   DWORD PTR , ESI         ;保存
00453E87MOV   DWORD PTR , EDX
00453E8DCMP   DWORD PTR , EDI
00453E90JNB   SHORT 00453E95
00453E92LEA   EAX, DWORD PTR
00453E95PUSH    EAX
00453E96CALL    005A1C40                         ;972768转化为整数
00453E9BMOV   ECX, DWORD PTR
00453EA1MOV   EBX, EDX
00453EA3PUSH    EBX
00453EA4MOV   EDI, EAX
00453EA6PUSH    EDI
00453EA7PUSH    ECX
00453EA8PUSH    ESI
00453EA9PUSH    005F2620                         ;ASCII "%014I64d%06I64d"
00453EAELEA   ESI, DWORD PTR
00453EB4CALL    00515EF0                         ;合并为 99512870169963972768
00453EB9PUSH    ECX
00453EBAMOV   ECX, ESP
00453EBCMOV   DWORD PTR , ESP
00453EC2PUSH    -1
00453EC4MOV   BYTE PTR , 0A
00453EC8PUSH    0
00453ECAMOV   EDX, ESI
00453ECCMOV   DWORD PTR , 0F
00453ED3MOV   DWORD PTR , 0
00453EDAPUSH    EDX
00453EDBMOV   BYTE PTR , 0
00453EDECALL    00405410                         ;转移结果
00453EE3CALL    00455D80                         ;计算校验值
00453EE8ADD   ESP, 1C
00453EEBCDQ
00453EECPUSH    0
00453EEEMOV   ESI, EAX                         ;校验值
00453EF0PUSH    005E1AB4
00453EF5LEA   ECX, DWORD PTR           ;长字符串
00453EF8MOV   DWORD PTR , ESI
00453EFEMOV   DWORD PTR , EDX
00453F04CALL    00405570
00453F09PUSH    0
00453F0BPUSH    005E1AB4
00453F10LEA   ECX, DWORD PTR           ;短字符串
00453F13CALL    00405570
00453F18MOV   EAX, DWORD PTR
00453F1EPUSH    5AF3
00453F23PUSH    107A4000
00453F28PUSH    EAX
00453F29PUSH    ESI                              ;3
00453F2ACALL    005B6050                         ;3*100000000000000
00453F2FADD   EAX, DWORD PTR
00453F35LEA   ESI, DWORD PTR
00453F38ADC   EDX, DWORD PTR
00453F3EPUSH    EDX
00453F3FPUSH    EAX
00453F40CALL    00455600                         ;-->AAAAAAAAAA
00453F45MOV   ECX, DWORD PTR
00453F4BMOV   EDX, DWORD PTR
00453F51ADD   ESP, 8
00453F54PUSH    0
00453F56PUSH    0F4240
00453F5BPUSH    ECX
00453F5CPUSH    EDX                              ;3
00453F5DCALL    005B6050                         ;3*1000000
00453F62ADD   EAX, EDI
00453F64ADC   EDX, EBX
00453F66PUSH    EDX
00453F67PUSH    EAX
00453F68LEA   ESI, DWORD PTR
00453F6BCALL    00455600                         ;-->3N7VL
00453F70MOV   EDX, DWORD PTR
00453F76MOV   EAX, ESI
00453F78PUSH    EAX
00453F79LEA   ECX, DWORD PTR
00453F7CPUSH    ECX
00453F7DPUSH    EDX
00453F7ECALL    00416210                         ;组合
0012E140   0012E2F0   ASCII "AAAAAAAAAA3N7VL"
总结:
1、激活码中的数字串划分为两部分,14位和6位。14位与机器码无关,6位中的后四位由机器码而来。
2、由这20位组合起来计算校验码。
3、完成校验码计算后,数字串形如:校验码&14位&校验码&6位。
4、按32进制将上述数字串转换为字符串,即为注册码。
二、激活码姓甚名谁
用OD搜索字符串,可得到如下内容:
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位。格式为:受限到期日期 受限用户数 不受限制用户数。受限用户数+不受限制用户数=总共支持的用户数。
84-41-18=2084年41月18日
10-21-48=2010年21月48日
02-30-65=2002年30月65日
笑料吧?!制作注册机,你可别留下话柄,干土匪干的事。而:
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能够掐头。但反正我没见过,你见过?

zxxiaopi 发表于 2016-1-20 12:32:14

膜拜下,学习了

zxy20014 发表于 2016-1-20 13:21:42

学习了,膜拜下~

erui 发表于 2016-1-20 13:34:16

给力,值得学习研究。

gujin162 发表于 2016-1-20 16:52:41

这是什么软件

qweokup 发表于 2016-1-20 18:30:45

学习了

DaShanRen 发表于 2016-1-20 19:24:22

https://www.chinapyg.com/forum.php?mod=viewthread&tid=79122&highlight=%CE%DEx%CC%EC

a583091790 发表于 2016-1-21 16:02:58

这个软件做什么用的?

rNKsT61v 发表于 2016-1-25 10:41:31

膜拜下,学习了

fpx_123 发表于 2016-1-26 08:30:10

什么意识?时间短么?
页: [1] 2
查看完整版本: 捣蛋部队之--老了不中用了