飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3949|回复: 7

[原创] Full Video Converter 10.5.0 注册算法分析

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

    [LV.1]初来乍到

    发表于 2015-6-16 10:45:35 | 显示全部楼层 |阅读模式
    本帖最后由 DaShanRen 于 2015-6-16 21:36 编辑

    一、准备
    00442341  CALL 00441BF0                         ;  分离--注册码分割成6段
    00442346  ADD ESP,1C
    00442349  MOV BYTE PTR SS:[ESP+34],58           ;  字符表
    0044234E  MOV BYTE PTR SS:[ESP+35],38
    00442353  MOV BYTE PTR SS:[ESP+36],32
    00442358  MOV BYTE PTR SS:[ESP+37],52
    0044235D  MOV BYTE PTR SS:[ESP+38],37
    00442362  MOV BYTE PTR SS:[ESP+39],4A
    00442367  MOV BYTE PTR SS:[ESP+3A],4C
    0044236C  MOV BYTE PTR SS:[ESP+3B],36
    00442371  MOV BYTE PTR SS:[ESP+3C],4B
    00442376  MOV BYTE PTR SS:[ESP+3D],57
    0044237B  MOV BYTE PTR SS:[ESP+3E],4F
    00442380  MOV BYTE PTR SS:[ESP+3F],47
    00442385  MOV BYTE PTR SS:[ESP+40],43
    0044238A  MOV BYTE PTR SS:[ESP+41],41
    0044238F  MOV BYTE PTR SS:[ESP+42],54
    00442394  MOV BYTE PTR SS:[ESP+43],55
    00442399  MOV BYTE PTR SS:[ESP+44],56
    0044239E  MOV BYTE PTR SS:[ESP+45],59
    004423A3  MOV BYTE PTR SS:[ESP+46],33
    004423A8  MOV BYTE PTR SS:[ESP+47],5A
    004423AD  MOV BYTE PTR SS:[ESP+48],34
    004423B2  MOV BYTE PTR SS:[ESP+49],35
    004423B7  MOV BYTE PTR SS:[ESP+4A],50
    004423BC  MOV BYTE PTR SS:[ESP+4B],4D
    004423C1  MOV BYTE PTR SS:[ESP+4C],45
    004423C6  MOV BYTE PTR SS:[ESP+4D],30
    004423CB  MOV BYTE PTR SS:[ESP+4E],31
    004423D0  MOV BYTE PTR SS:[ESP+4F],39
    004423D5  MOV BYTE PTR SS:[ESP+50],49
    004423DA  MOV BYTE PTR SS:[ESP+51],4E
    004423DF  LEA ECX,DWORD PTR SS:[ESP+88]         ;  指针1
    004423E6  PUSH ECX
    004423E7  PUSH ECX
    004423E8  LEA EDX,DWORD PTR SS:[ESP+28]
    004423EC  MOV ECX,ESP
    004423EE  MOV DWORD PTR SS:[ESP+30],ESP
    004423F2  PUSH EDX
    004423F3  MOV BYTE PTR SS:[ESP+5E],42
    004423F8  MOV BYTE PTR SS:[ESP+5F],44
    004423FD  MOV BYTE PTR SS:[ESP+60],51
    00442402  MOV BYTE PTR SS:[ESP+61],53
    00442407  MOV BYTE PTR SS:[ESP+62],46
    0044240C  MOV BYTE PTR SS:[ESP+63],48
    字符表为:X82R7JL6KWOGCATUVY3Z45PME019INBDQSFH

    00442411  MOV EBX,5
    ……
    00442424  CALL 00441E20                         ;  检测1--每个字符的位置号,结果为数组
    检测每一段的字符在在上述字符串中的位置号,得到一数组。下同
    00442429  ADD ESP,0C
    0044242C  LEA ECX,DWORD PTR SS:[ESP+78]         ;  指针2
    ……
    00442448  CALL 00441E20                         ;  检测2--同上
    0044244D  ADD ESP,0C
    00442450  LEA ECX,DWORD PTR SS:[ESP+2C]         ;  指针3
    ……
    0044246C  CALL 00441E20                         ;  检测3--同上
    00442471  ADD ESP,0C
    00442474  LEA ECX,DWORD PTR SS:[ESP+68]         ;  指针4
    ……
    00442490  CALL 00441E20                         ;  检测4--同上
    00442495  ADD ESP,0C
    00442498  LEA ECX,DWORD PTR SS:[ESP+70]         ;  指针5
    ……
    004424B4  CALL 00441E20                         ;  检测5--同上
    004424B9  ADD ESP,0C
    004424BC  LEA ECX,DWORD PTR SS:[ESP+80]         ;  指针6
    ……
    004424DB  CALL 00441E20                         ;  检测6--同上

    二、检验第三段
    0044251F  CALL 00441EC0                         ;  字符"Full"+"Video Converter 10"求和=7E3=2019
    00442524  MOVSX ECX,BYTE PTR SS:[ESP+34]        ;  第三段序数结果1
    00442529  MOVSX EDX,BYTE PTR SS:[ESP+35]        ;  序数结果2
    0044252E  LEA ECX,DWORD PTR DS:[ECX+ECX*4]
    00442531  LEA ECX,DWORD PTR DS:[EDX+ECX*2]      ;  结果=结果1*10+结果2
    00442534  MOVSX EDX,BYTE PTR SS:[ESP+36]        ;  结果3
    00442539  LEA ECX,DWORD PTR DS:[ECX+ECX*4]
    0044253C  LEA ECX,DWORD PTR DS:[EDX+ECX*2]      ;  结果=结果*10+结果3
    0044253F  MOVSX EDX,BYTE PTR SS:[ESP+37]        ;  结果4
    00442544  LEA ECX,DWORD PTR DS:[ECX+ECX*4]
    00442547  LEA ECX,DWORD PTR DS:[EDX+ECX*2]      ;  结果=结果*10+结果4
    0044254A  MOVSX EDX,BYTE PTR SS:[ESP+38]        ;  结果5
    0044254F  LEA ECX,DWORD PTR DS:[ECX+ECX*4]
    00442552  LEA ECX,DWORD PTR DS:[EDX+ECX*2]      ;  结果=结果*10+结果5
    00442555  ADD ESP,8
    00442558  CMP EAX,ECX                           ;  求和结果与序数结果比较
    0044255A  JE 00442696                           ;  相等则跳
    ……

    三、检验第一段
    00442696  MOV EBX,5                             ;  注册码第三段满足条件时跳到这里
    0044269B  PUSH EBX
    0044269C  LEA ECX,DWORD PTR SS:[ESP+8C]
    004426A3  CALL 00441FE0                         ;  第一段位置号求和
    004426A8  ADD ESP,4
    004426AB  CMP EAX,64                            ;  结果要等于0x64
    004426AE  JE 004427E9                           ;  相等则跳
    ……

    四、检验第二段
    004427E9  PUSH 3                                ;  第一段满足条件跳到这里
    004427EB  LEA ECX,DWORD PTR SS:[ESP+7E]
    004427EF  CALL 00441FE0                         ;  第二段后3位求和
    004427F4  PUSH 2
    004427F6  LEA ECX,DWORD PTR SS:[ESP+80]
    004427FD  MOV ESI,EAX
    004427FF  CALL 00441FE0                         ;  第二段前2位求和
    00442804  ADD ESP,8
    00442807  CMP EAX,ESI                           ;  第二段前2位的和=后3位的和
    00442809  JE 00442944                           ;  相等则跳
    ……

    五、检验第四段
    00442944  PUSH 2                                ;  第二段满足条件时跳到这里
    00442946  LEA ECX,DWORD PTR SS:[ESP+6C]         ;  第四段
    0044294A  CALL 00441FE0                         ;  前2位求和
    0044294F  MOV ESI,EAX
    00442951  PUSH 3
    00442953  LEA ECX,DWORD PTR SS:[ESP+72]
    00442957  ADD ESI,1E                            ;  结果+1E
    0044295A  CALL 00441FE0                         ;  后三位求和
    0044295F  ADD ESP,8
    00442962  CMP ESI,EAX
    00442964  JE 00442A9F                           ;  两结果相等则跳
    ……

    六、检验第五段
    00442A9F  PUSH 2                                ;  第四段满足条件跳到这里
    00442AA1  LEA ECX,DWORD PTR SS:[ESP+74]         ;  第五段
    00442AA5  CALL 00441FE0                         ;  前2位求和
    00442AAA  MOV ESI,EAX
    00442AAC  PUSH 3
    00442AAE  LEA ECX,DWORD PTR SS:[ESP+7A]
    00442AB2  ADD ESI,0A                            ;  结果+0xA
    00442AB5  CALL 00441FE0                         ;  后3位求和
    00442ABA  ADD ESP,8
    00442ABD  CMP ESI,EAX
    00442ABF  JE 00442BFA                           ;  两结果相等则跳
    ……

    七、检验第六段
    00442BFA  PUSH 3                                ;  第五段满足条件跳到这里
    00442BFC  LEA ECX,DWORD PTR SS:[ESP+86]         ;  第6段
    00442C03  CALL 00441FE0                         ;  后三位求和
    00442C08  PUSH 2
    00442C0A  LEA ECX,DWORD PTR SS:[ESP+88]
    00442C11  MOV EBP,EAX
    00442C13  CALL 00441FE0                         ;  前两位求和
    00442C18  SUB EBP,EAX                           ;  后三位的和-前两位的和
    00442C1A  ADD ESP,8
    00442C1D  CMP EBP,1                             ;  结果=1?
    00442C20  JE 00442D6D                           ;  是则跳
    00442C26  CMP EBP,3                             ;  结果=3?
    00442C29  JE 00442D6D                           ;  是则跳
    00442C2F  CMP EBP,9                             ;  结果=9?
    00442C32  JE 00442D6D                           ;  是则跳
    ……

    八、二次准备
    00442D6D  MOV CL,4E                             ;  全部满足条件跳到这里--组件字符串CULVHXNJEYUNIEOG
    00442D6F  MOV DL,55
    00442D71  MOV AL,45
    00442D73  MOV BYTE PTR SS:[ESP+5E],CL
    00442D77  MOV BYTE PTR SS:[ESP+63],CL
    00442D7B  MOV BYTE PTR SS:[ESP+58],43
    00442D80  MOV BYTE PTR SS:[ESP+59],DL
    00442D84  MOV BYTE PTR SS:[ESP+5A],4C
    00442D89  MOV BYTE PTR SS:[ESP+5B],56
    00442D8E  MOV BYTE PTR SS:[ESP+5C],48
    00442D93  MOV BYTE PTR SS:[ESP+5D],58
    00442D98  MOV BYTE PTR SS:[ESP+5F],4A
    00442D9D  MOV BYTE PTR SS:[ESP+60],AL
    00442DA1  MOV BYTE PTR SS:[ESP+61],59
    00442DA6  MOV BYTE PTR SS:[ESP+62],DL
    00442DAA  MOV BYTE PTR SS:[ESP+64],49
    00442DAF  MOV BYTE PTR SS:[ESP+65],AL
    00442DB3  MOV BYTE PTR SS:[ESP+66],4F
    00442DB8  MOV BYTE PTR SS:[ESP+67],47

    九、第一段中至少有一个字符是第二个字符串中的字符,下同
    00442DBD  XOR ECX,ECX                           ;  i=0
    00442DBF  NOP
    00442DC0  MOV DL,BYTE PTR SS:[ESP+ECX+58]       ;  读取字符串2第i位位置号
    00442DC4  XOR EAX,EAX                           ;  j=0
    00442DC6  CMP BYTE PTR SS:[ESP+EAX+34],DL       ;  查找第一个字符串中的位置
    00442DCA  JE SHORT 00442DD5                     ;  找到则跳过
    00442DCC  INC EAX                               ;  j++
    00442DCD  CMP EAX,24
    00442DD0  JL SHORT 00442DC6
    00442DD2  OR EAX,FFFFFFFF
    00442DD5  MOV BYTE PTR SS:[ESP+ECX+94],AL       ;  保存位置号--数组
    00442DDC  INC ECX                               ;  i++
    00442DDD  CMP ECX,10
    00442DE0  JL SHORT 00442DC0                     ;  未完继续

    00442DE2  XOR ECX,ECX                           ;  j=0
    00442DE4  JMP SHORT 00442DF0
    00442DE6  LEA ESP,DWORD PTR SS:[ESP]
    00442DED  LEA ECX,DWORD PTR DS:[ECX]
    00442DF0  MOV DL,BYTE PTR SS:[ESP+ECX+88]       ;  读取第一段的第j位
    00442DF7  XOR EAX,EAX                           ;  i=0
    00442DF9  LEA ESP,DWORD PTR SS:[ESP]
    00442E00  CMP DL,BYTE PTR SS:[ESP+EAX+94]       ;  与结果的第i位比较
    00442E07  JE 00442F4D                           ;  相等则跳过--第一段的字符至少有一个是第二个字符串中的字符?
    00442E0D  INC EAX                               ;  i++
    00442E0E  CMP EAX,10
    00442E11  JL SHORT 00442E00
    00442E13  INC ECX                               ;  j++
    00442E14  CMP ECX,EBX
    00442E16  JL SHORT 00442DF0
    ……
    00442F4D  XOR ECX,ECX                           ;  i=0
    00442F4F  NOP
    00442F50  MOV DL,BYTE PTR SS:[ESP+ECX+78]       ;  读取第2段的第i位
    00442F54  XOR EAX,EAX                           ;  j=0
    00442F56  JMP SHORT 00442F60
    00442F58  LEA ESP,DWORD PTR SS:[ESP]
    00442F5F  NOP
    00442F60  CMP DL,BYTE PTR SS:[ESP+EAX+94]       ;  与结果比较
    00442F67  JE 004430AD                           ;  想的则跳--至少有一个,同上
    00442F6D  INC EAX                               ;  j++
    00442F6E  CMP EAX,10
    00442F71  JL SHORT 00442F60
    00442F73  INC ECX                               ;  i++
    00442F74  CMP ECX,EBX
    00442F76  JL SHORT 00442F50
    ……
    004430AD  XOR ECX,ECX                           ;  i=0
    004430AF  NOP
    004430B0  MOV DL,BYTE PTR SS:[ESP+ECX+68]       ;  读取第四段第i位
    004430B4  XOR EAX,EAX                           ;  j=0
    004430B6  JMP SHORT 004430C0
    004430B8  LEA ESP,DWORD PTR SS:[ESP]
    004430BF  NOP
    004430C0  CMP DL,BYTE PTR SS:[ESP+EAX+94]       ;  比较
    004430C7  JE 0044320D                           ;  至少有一个,同上
    004430CD  INC EAX                               ;  j++
    004430CE  CMP EAX,10
    004430D1  JL SHORT 004430C0
    004430D3  INC ECX                               ;  i++
    004430D4  CMP ECX,EBX
    004430D6  JL SHORT 004430B0
    ……
    0044320D  XOR ECX,ECX                           ;  i=0
    0044320F  NOP
    00443210  MOV DL,BYTE PTR SS:[ESP+ECX+70]       ;  读取第五段中的第i位
    00443214  XOR EAX,EAX                           ;  j=0
    00443216  JMP SHORT 00443220
    00443218  LEA ESP,DWORD PTR SS:[ESP]
    0044321F  NOP
    00443220  CMP DL,BYTE PTR SS:[ESP+EAX+94]       ;  比较
    00443227  JE 0044336D                           ;  至少有一个,同上
    0044322D  INC EAX                               ;  j++
    0044322E  CMP EAX,10
    00443231  JL SHORT 00443220
    00443233  INC ECX                               ;  i++
    00443234  CMP ECX,EBX
    00443236  JL SHORT 00443210
    ……
    0044336D  XOR ECX,ECX                           ;  i=0
    0044336F  NOP
    00443370  MOV DL,BYTE PTR SS:[ESP+ECX+80]       ;  读取第六段中的第i位
    00443377  XOR EAX,EAX                           ;  j=0
    00443379  LEA ESP,DWORD PTR SS:[ESP]
    00443380  CMP DL,BYTE PTR SS:[ESP+EAX+94]       ;  比较
    00443387  JE 004434CD                           ;  至少有一个,同上
    0044338D  INC EAX                               ;  j++
    0044338E  CMP EAX,10
    00443391  JL SHORT 00443380
    00443393  INC ECX                               ;  i++
    00443394  CMP ECX,EBX
    00443396  JL SHORT 00443370
    ……

    十、三次检测
    004434CD  PUSH EBX
    004434CE  LEA ECX,DWORD PTR SS:[ESP+7C]         ;  第二段数据
    004434D2  CALL 00441FE0                         ;  求和
    004434D7  PUSH EBX
    004434D8  LEA ECX,DWORD PTR SS:[ESP+70]         ;  第四段数据
    004434DC  MOV ESI,EAX                           ;  二段和
    004434DE  CALL 00441FE0                         ;  求和
    004434E3  PUSH EBX
    004434E4  LEA ECX,DWORD PTR SS:[ESP+7C]         ;  第五段数据
    004434E8  MOV EDI,EAX                           ;  四段和
    004434EA  CALL 00441FE0                         ;  求和
    004434EF  ADD ESP,0C
    004434F2  CMP ESI,64                            ;  二段和与0x64比较
    004434F5  JG 0044379B                           ;  大于则跳
    004434FB  CMP ESI,EDI                           ;  二段和与四段和比较
    004434FD  JL 0044379B                           ;  小于则跳
    00443503  CMP EDI,EAX                           ;  四段和与五段和比较
    00443505  JL 0044379B                           ;  小于则跳



    小结:
    在都转换为位置号的情况下,各段应该满足的条件是:
    1、
    第一段的和=0x64;
    第二段中,前2位和=后3位的和;
    第三段组成十进制结果=2019;
    第四段中,前2位的和+1E=后3位的和;
    第五段中,前2位的和+0A=后3位的和;
    第六段中,后3位的和-前2位的和=1,3,9。分别对应一年期、四年期、无限期。
    2、
    第一、二、四、五、六段中各至少有一个字符在:CULVHXNJEYUNIEOG中(有重复)。
    3、
    第二段、第四段、第五段的和要满足:
    第二段<=0x64;第二段>=第四段;第四段>=第五段。

    例如:
    YMMPU-E144O-X2X8W-XHM0Y-E5M1L-I5V5A--一年期
    YMMPU-E144O-X2X8W-XHM0Y-E5M1L-I4Y5A--四年期
    YMMPU-E144O-X2X8W-XHM0Y-E5M1L-IY3PT--无限期


    评分

    参与人数 3威望 +44 飘云币 +64 收起 理由
    GGLHY + 20 + 40 PYG有你更精彩!
    pentium450 + 20 + 20 写得非常好!
    开心啦 + 4 + 4 很给力!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2015-6-16 10:47:31 | 显示全部楼层
    搞啥鸟,成乱码了!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-3-10 20:59
  • 签到天数: 243 天

    [LV.8]以坛为家I

    发表于 2015-6-16 11:19:46 | 显示全部楼层
    膜拜,会算法的都是大神
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    半小时前
  • 签到天数: 2055 天

    [LV.Master]伴坛终老

    发表于 2015-6-16 19:04:36 | 显示全部楼层
    能提供注册机算法代码及注册机就好了。

    点评

    若果有人愿意看或者是学习,提供也无妨!  详情 回复 发表于 2015-6-17 08:50
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2015-6-17 08:50:14 | 显示全部楼层
    冯玉姣 发表于 2015-6-16 19:04
    能提供注册机算法代码及注册机就好了。

    若果有人愿意看或者是学习,提供也无妨!

    点评

    那就先谢谢了!  详情 回复 发表于 2015-6-17 18:17
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    半小时前
  • 签到天数: 2055 天

    [LV.Master]伴坛终老

    发表于 2015-6-17 18:17:21 | 显示全部楼层
    DaShanRen 发表于 2015-6-17 08:50
    若果有人愿意看或者是学习,提供也无妨!

    那就先谢谢了!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-3-7 15:25
  • 签到天数: 442 天

    [LV.9]以坛为家II

    发表于 2015-7-18 20:06:12 | 显示全部楼层
    厉害!算法够麻烦啊!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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