飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7656|回复: 23

[原创] ZD Soft Screen Recorder 8.1算法的简单分析+注册机

  [复制链接]
  • TA的每日心情
    开心
    2022-8-2 13:08
  • 签到天数: 319 天

    [LV.8]以坛为家I

    发表于 2015-7-20 11:20:16 | 显示全部楼层 |阅读模式
    本帖最后由 何必丨在意妳 于 2015-7-20 11:22 编辑

    ZD Soft Screen Recorder 是一款高性能的屏幕录像机,它可以录制屏幕活动(可以是全屏、指定的区域、指定的窗口等)为视频文件,并实时同步录制音频(使用LAME编码),供演示或讲解之用。

    1.首先用PEID查壳,无壳,是QT程序
    接着我们来到注册窗口,随便填入KEY
    注册窗口.png

    由于软件会占用F8和F9键,最好提前修改一下
    启动占用.png


    2.输入注册信息之后点击OK,我们用F12暂停法,ALT+K打开调用堆栈窗口我们会发现,有很多调用,其中绝大多数都是在系统领空,我们找到程序领空的调用就只有几个,我是直接给它们全部下断点,重载程序。看看那个能断下来,段下来之后通过它,再找关键位置
    QQ截图20150720103246.png

    程序在此处断下00418790,往下F8,来到下面
    1. 004187DE   .  8B6D 00       mov ebp,dword ptr ss:[ebp]
    2. 004187E1   .  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]
    3. 004187E4   .  85C0          test eax,eax
    4. 004187E6   .  0F84 C5000000 je ScnRec.004188B1                            ;  判断Name是否为空
    5. 004187EC   .  8B07          mov eax,dword ptr ds:[edi]
    6. 004187EE   .  8B48 F8       mov ecx,dword ptr ds:[eax-0x8]
    7. 004187F1   .  85C9          test ecx,ecx
    8. 004187F3   .  0F84 B8000000 je ScnRec.004188B1                            ;  判断E-Mail是否为空
    9. 004187F9   .  8B0B          mov ecx,dword ptr ds:[ebx]
    10. 004187FB   .  8B41 F8       mov eax,dword ptr ds:[ecx-0x8]
    11. 004187FE   .  85C0          test eax,eax
    12. 00418800   .  0F84 AB000000 je ScnRec.004188B1                            ;  判断Key是否为空
    13. 00418806   .  8B4E 6C       mov ecx,dword ptr ds:[esi+0x6C]
    14. 00418809   .  55            push ebp
    15. 0041880A   .  83C1 04       add ecx,0x4
    16. 0041880D   .  E8 54BA0800   call <jmp.&MFC42u.#??4CString@@QAEABV0@PBG@Z_>
    17. 00418812   .  8B17          mov edx,dword ptr ds:[edi]
    18. 00418814   .  8B4E 6C       mov ecx,dword ptr ds:[esi+0x6C]
    19. 00418817   .  52            push edx
    20. 00418818   .  83C1 08       add ecx,0x8
    21. 0041881B   .  E8 46BA0800   call <jmp.&MFC42u.#??4CString@@QAEABV0@PBG@Z_>
    22. 00418820   .  8B03          mov eax,dword ptr ds:[ebx]
    23. 00418822   .  8B4E 6C       mov ecx,dword ptr ds:[esi+0x6C]
    24. 00418825   .  50            push eax
    25. 00418826   .  E8 D5F30000   call ScnRec.00427C00                          
    26. 0041882B   .  8B4E 6C       mov ecx,dword ptr ds:[esi+0x6C]
    27. 0041882E   .  E8 BDF90000   call ScnRec.004281F0                           关键点
    28. 00418833   .  85C0          test eax,eax
    29. 00418835   .  75 3A         jnz short ScnRec.00418871
    30. 00418837   .  E8 66BA0800   call <jmp.&MFC42u.#?AfxGetThread@@YGPAVCWinTh>
    复制代码
    F7进入0041882E  往下F8
    1. 00428245  |.  50            push eax
    2. 00428246  |.  E8 6FC00700   call jmp.&MFC42u.#??H@YG?AVCString@@ABV0@0@Z  
    3. 往注册表里写入注册信息
    4. 0042824B  |.  8B00          mov eax,dword ptr ds:[eax]
    5. 0042824D  |.  8BCE          mov ecx,esi
    6. 0042824F  |.  50            push eax
    7. 00428250  |.  68 E8030000   push 0x3E8
    8. 00428255  |.  C64424 20 01  mov byte ptr ss:[esp+0x20],0x1
    9. 0042825A      E8 C1FDFFFF   call ScnRec.00428020                          ;  算法
    10. 0042825F  |.  8D4C24 08     lea ecx,dword ptr ss:[esp+0x8]
    11. 00428263  |.  8946 18       mov dword ptr ds:[esi+0x18],eax
    12. 00428266  |.  C64424 18 00  mov byte ptr ss:[esp+0x18],0x0
    13. 0042826B  |.  E8 E4BF0700   call <jmp.&MFC42u.#??1CString@@QAE@XZ_800>
    复制代码
    F7进入0042825A
    来到下面关键算法
    1. 00428020  /[        DISCUZ_CODE_11        ]nbsp; 64:A1 0000000>mov eax,dword ptr fs:[0]                       ;   
    2. 00428026  |.  6A FF         push -0x1
    3. 00428028  |.  68 08295000   push ScnRec.00502908
    4. 0042802D  |.  50            push eax
    5. 0042802E  |.  64:8925 00000>mov dword ptr fs:[0],esp
    6. 00428035  |.  83EC 68       sub esp,0x68
    7. 00428038  |.  33C0          xor eax,eax
    8. 0042803A  |.  53            push ebx
    9. 0042803B  |.  55            push ebp
    10. 0042803C  |.  56            push esi
    11. 0042803D  |.  8BB424 840000>mov esi,dword ptr ss:[esp+0x84]                ;  ScnRec.0042825F
    12. 00428044  |.  33DB          xor ebx,ebx
    13. 00428046  |.  57            push edi
    14. 00428047  |.  3BF3          cmp esi,ebx
    15. 00428049  |.  8BE9          mov ebp,ecx
    16. 0042804B  |.  0F8E 87010000 jle ScnRec.004281D8
    17. 00428051  |.  B9 08000000   mov ecx,0x8
    18. 00428056  |.  8D7C24 11     lea edi,dword ptr ss:[esp+0x11]
    19. 0042805A  |.  884424 10     mov byte ptr ss:[esp+0x10],al
    20. 0042805E  |.  F3:AB         rep stos dword ptr es:[edi]
    21. 00428060  |.  8B8424 8C0000>mov eax,dword ptr ss:[esp+0x8C]
    22. 00428067  |.  8D4C24 10     lea ecx,dword ptr ss:[esp+0x10]
    23. 0042806B  |.  50            push eax
    24. 0042806C  |.  51            push ecx
    25. 0042806D  |.  8BCD          mov ecx,ebp
    26. 0042806F  |.  E8 ECFDFFFF   call ScnRec.00427E60                           ;  MD5加密
    27. 00428074  |.  85C0          test eax,eax
    28. 00428076  |.  75 08         jnz short ScnRec.00428080
    29. 00428078  |.  83C8 FF       or eax,-0x1
    30. 0042807B  |.  E9 58010000   jmp ScnRec.004281D8
    31. 00428080  |>  B9 10000000   mov ecx,0x10
    32. 00428085  |.  33C0          xor eax,eax
    33. 00428087  |.  8D7C24 36     lea edi,dword ptr ss:[esp+0x36]
    34. 0042808B  |.  66:895C24 34  mov word ptr ss:[esp+0x34],bx
    35. 00428090  |.  F3:AB         rep stos dword ptr es:[edi]
    36. 00428092  |.  8D45 0C       lea eax,[arg.2]
    37. 00428095  |.  8D8C24 8C0000>lea ecx,dword ptr ss:[esp+0x8C]
    38. 0042809C  |.  50            push eax
    39. 0042809D  |.  E8 30C20700   call <jmp.&MFC42u.#??0CString@@QAE@ABV0@@Z_535>
    40. 004280A2  |.  33FF          xor edi,edi
    41. 004280A4  |.  3BF3          cmp esi,ebx
    42. 004280A6  |.  899C24 800000>mov dword ptr ss:[esp+0x80],ebx
    43. 004280AD  |.  0F8E 09010000 jle ScnRec.004281BC
    44. 004280B3  |.  8B1D 64315200 mov ebx,dword ptr ds:[<&KERNEL32.MultiByteToWi>;  kernel32.MultiByteToWideChar
    45. 004280B9  |>  8D5424 34     /lea edx,dword ptr ss:[esp+0x34]
    46. 004280BD  |.  6A 21         |push 0x21
    47. 004280BF  |.  52            |push edx
    48. 004280C0  |.  8D4424 18     |lea eax,dword ptr ss:[esp+0x18]
    49. 004280C4  |.  6A FF         |push -0x1
    50. 004280C6  |.  50            |push eax
    51. 004280C7  |.  6A 00         |push 0x0
    52. 004280C9  |.  6A 00         |push 0x0
    53. 004280CB  |.  FFD3          |call ebx
    54. 004280CD  |.  8D4C24 34     |lea ecx,dword ptr ss:[esp+0x34]
    55. 004280D1  |.  8D5424 10     |lea edx,dword ptr ss:[esp+0x10]
    56. 004280D5  |.  51            |push ecx
    57. 004280D6  |.  52            |push edx
    58. 004280D7  |.  8BCD          |mov ecx,ebp
    59. 004280D9  |.  E8 82FDFFFF   |call ScnRec.00427E60                          ;  MD5加密
    60. 004280DE  |.  33F6          |xor esi,esi
    61. 004280E0  |>  66:8B4474 34  |/mov ax,word ptr ss:[esp+esi*2+0x34]
    62. 004280E5  |.  50            ||push eax                                     ; /w
    63. 004280E6  |.  FF15 D4365200 ||call dword ptr ds:[<&MSVCRT.iswalpha>]       ; \判断是否是字符或数字
    64. 004280EC  |.  83C4 04       ||add esp,0x4
    65. 004280EF  |.  85C0          ||test eax,eax
    66. 004280F1  |.  0F85 86000000 ||jnz ScnRec.0042817D
    67. 004280F7  |.  8BC6          ||mov eax,esi                                  ;  先进行位数的比较,前一位
    68. 004280F9  |.  25 01000080   ||and eax,0x80000001                           ;  前面得位数与0x80000001与运算
    69. 004280FE  |.  79 05         ||jns short ScnRec.00428105                    ;  sf=0跳转
    70. 00428100  |.  48            ||dec eax
    71. 00428101  |.  83C8 FE       ||or eax,-0x2
    72. 00428104  |.  40            ||inc eax
    73. 00428105  |>  74 16         ||je short ScnRec.0042811D                     ;  zf=1跳,当EAX=0时跳    奇数位不跳
    74. 00428107  |.  33C9          ||xor ecx,ecx
    75. 00428109  |.  66:8B4C74 34  ||mov cx,word ptr ss:[esp+esi*2+0x34]          ;  取当前数字的ASCII码
    76. 0042810E  |.  81E1 01000080 ||and ecx,0x80000001
    77. 00428114  |.  79 05         ||jns short ScnRec.0042811B
    78. 00428116  |.  49            ||dec ecx
    79. 00428117  |.  83C9 FE       ||or ecx,-0x2
    80. 0042811A  |.  41            ||inc ecx
    81. 0042811B  |>  75 60         ||jnz short ScnRec.0042817D                    ;  ZF=0跳,数字的ASCII码为奇数位时,跳转
    82. 0042811D  |>  85C0          ||test eax,eax
    83. 0042811F  |.  75 16         ||jnz short ScnRec.00428137                    ;  当EAX=0时不跳
    84. 00428121  |.  33D2          ||xor edx,edx
    85. 00428123  |.  66:8B5474 34  ||mov dx,word ptr ss:[esp+esi*2+0x34]          ;  取当前数字的ASCII码
    86. 00428128  |.  81E2 01000080 ||and edx,0x80000001
    87. 0042812E  |.  79 05         ||jns short ScnRec.00428135
    88. 00428130  |.  4A            ||dec edx
    89. 00428131  |.  83CA FE       ||or edx,-0x2
    90. 00428134  |.  42            ||inc edx
    91. 00428135  |>  74 46         ||je short ScnRec.0042817D
    92. 00428137  |>  33C0          ||xor eax,eax
    93. 00428139  |.  B9 14000000   ||mov ecx,0x14
    94. 0042813E  |.  66:8B4474 34  ||mov ax,word ptr ss:[esp+esi*2+0x34]
    95. 00428143  |.  03C6          ||add eax,esi
    96. 00428145  |.  03C7          ||add eax,edi
    97. 00428147  |.  99            ||cdq
    98. 00428148  |.  F7F9          ||idiv ecx
    99. 0042814A  |.  8D42 47       ||lea eax,dword ptr ds:[edx+0x47]
    100. 0042814D  |.  66:3D 4F00    ||cmp ax,0x4F
    101. 00428151  |.  66:894474 34  ||mov word ptr ss:[esp+esi*2+0x34],ax
    102. 00428156  |.  75 07         ||jnz short ScnRec.0042815F
    103. 00428158  |.  66:C74474 34 >||mov word ptr ss:[esp+esi*2+0x34],0x30
    104. 0042815F  |>  66:837C74 34 >||cmp word ptr ss:[esp+esi*2+0x34],0x49
    105. 00428165  |.  75 07         ||jnz short ScnRec.0042816E
    106. 00428167  |.  66:C74474 34 >||mov word ptr ss:[esp+esi*2+0x34],0x31
    107. 0042816E  |>  66:837C74 34 >||cmp word ptr ss:[esp+esi*2+0x34],0x5A
    108. 00428174  |.  75 07         ||jnz short ScnRec.0042817D
    109. 00428176  |.  66:C74474 34 >||mov word ptr ss:[esp+esi*2+0x34],0x32
    110. 0042817D  |>  46            ||inc esi
    111. 0042817E  |.  83FE 20       ||cmp esi,0x20
    112. 00428181  |.^ 0F8C 59FFFFFF |\jl ScnRec.004280E0
    113. 00428187  |.  8D5424 34     |lea edx,dword ptr ss:[esp+0x34]
    114. 0042818B  |.  8BCD          |mov ecx,ebp
    115. 0042818D  |.  52            |push edx
    116. 0042818E  |.  E8 6DFAFFFF   |call ScnRec.00427C00
    117. 00428193  |.  8B8424 8C0000>|mov eax,dword ptr ss:[esp+0x8C]
    118. 0042819A  |.  8B4D 0C       |mov ecx,[arg.2]
    119. 0042819D  |.  50            |push eax                                      ; /wstr2 = 00000001 ???
    120. 0042819E  |.  51            |push ecx                                      ; |wstr1 = "??P..艟B?"
    121. 0042819F  |.  FF15 80365200 |call dword ptr ds:[<&MSVCRT.wcscmp>]          ; \wcscmp
    122. 004281A5  |.  83C4 08       |add esp,0x8
    123. 004281A8      85C0          test eax,eax
    124. 004281AA      74 10         je short ScnRec.004281BC
    125. 004281AC      8B8424 880000>mov eax,dword ptr ss:[esp+0x88]
    126. 004281B3  |.  47            |inc edi
    127. 004281B4  |.  3BF8          |cmp edi,eax                                   ;  循环1000次
    128. 004281B6  |.^ 0F8C FDFEFFFF \jl ScnRec.004280B9
    129. 004281BC  |>  8D8C24 8C0000>lea ecx,dword ptr ss:[esp+0x8C]
    130. 004281C3  |.  8D77 01       lea esi,dword ptr ds:[edi+0x1]
    131. 004281C6  |.  C78424 800000>mov dword ptr ss:[esp+0x80],-0x1
    132. 004281D1  |.  E8 7EC00700   call <jmp.&MFC42u.#??1CString@@QAE@XZ_800>
    133. 004281D6  |.  8BC6          mov eax,esi
    134. 004281D8  |>  8B4C24 78     mov ecx,dword ptr ss:[esp+0x78]
    135. 004281DC  |.  5F            pop edi                                        ;  0012F138
    136. 004281DD  |.  5E            pop esi                                        ;  0012F138
    137. 004281DE  |.  5D            pop ebp                                        ;  0012F138
    138. 004281DF  |.  5B            pop ebx                                        ;  0012F138
    139. 004281E0  |.  64:890D 00000>mov dword ptr fs:[0],ecx
    140. 004281E7  |.  83C4 74       add esp,0x74
    141. 004281EA  \.  C2 0800       retn 0x8
    复制代码

    3.算法流程
    这个0042806F  |.  E8ECFDFFFF   call ScnRec.00427E60          ; MD5加密

    将你输入的 “Software\ZDSoft\Screen Recorder\输入的E-Mail”  加密(不包括引号)

    程序会先将E-Mail中的大写字母转化为小写字母

    也就是本例中Software\ZDSoft\Screen Recorder\chinapyg@chinapyg.com 加密

    加密后的结果D8BE24247C846E0343B4F0E9B870A097

    004280D9 |.  E8 82FDFFFF   |call ScnRec.00427E60(此处加密不进行算法运算)
    将上次的MD5结果再次进行MD5加密,保存,以被下次循环时直接使用

    先判断是否是字母,若是字母直接保留,循环验证下一位。若不是则

    1.判断他的前一位,位数是否为奇数,是,则判断该数字的ASCII码是否为奇数,如果是则不改变数字

    2.判断他的前一位,位数是否为偶数,是,则判断该数字的ASCII码是否为奇数,如果是奇数则进行运算

    3.判断他的前一位,位数是否为奇数,是,则判断该数字的ASCII码是否为偶数,如果是偶数则进行运算

    4.判断他的前一位,位数是否为偶数,是,则判断该数字的ASCII码是否为偶数,如果是则不改变数字

    一共分为
    4中情况,同是偶数或同是奇数是不改变数字的,否则将进行运算。

    上面的偶数或奇数的称呼,只是我对与运算之后结果进行相应运算的称呼,纯属个人理解称呼。


    其中的运算过程:

    1.该数字的
    ASCII+该数字在字符串中的位置序号-1+当前是第几次MD5循环

    2.将上面的结果除以
    0x14取余数,余数+0x47ASCII码转化为字符,填在该数字的相应位置

    最后,将上面的结果与输入的
    KEY进行循环验证,循环1000次,只要其中的某一次正确,程序即注册成功



    QQ截图20150720111326.png

    注册机 源码.rar (710.98 KB, 下载次数: 18)
    初学易语言,代码比较渣
    感谢大家观看


    评分

    参与人数 8威望 +40 飘云币 +136 收起 理由
    GeekCat + 16 PYG有你更精彩!
    飞天 + 4 + 4 赞一个!
    echo + 8 + 8 感谢发布原创作品!
    dliwj + 4 PYG有你更精彩!
    逍遥枷锁 + 4 + 8 PYG有你更精彩!
    GGLHY + 40 PYG有你更精彩!
    Rooking + 20 + 40 感谢发布原创作品!
    飘云 + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2015-7-20 11:22:56 | 显示全部楼层
            PYG有你更精彩! 好作品!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-25 15:21
  • 签到天数: 487 天

    [LV.9]以坛为家II

    发表于 2015-7-20 11:28:06 | 显示全部楼层
    欢迎来到飘云阁发布原创作品,PYG 有你更精彩
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2015-7-20 11:41:36 | 显示全部楼层
    前排学习,谢谢分享!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-3-10 20:59
  • 签到天数: 243 天

    [LV.8]以坛为家I

    发表于 2015-7-20 12:44:40 | 显示全部楼层
    感谢分享原创,支持一下了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

    发表于 2015-7-20 13:23:30 | 显示全部楼层
    学习算法分析  感谢
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-10-4 05:58
  • 签到天数: 356 天

    [LV.8]以坛为家I

    发表于 2015-7-20 14:08:50 | 显示全部楼层
    很好的破文,感谢楼主
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 14:32
  • 签到天数: 2164 天

    [LV.Master]伴坛终老

    发表于 2015-7-20 14:19:27 | 显示全部楼层
    膜拜算法分析!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 08:13
  • 签到天数: 2181 天

    [LV.Master]伴坛终老

    发表于 2015-7-20 15:49:55 | 显示全部楼层
    谢谢楼主,水平太低,主要看楼主贴出的过程。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 08:48
  • 签到天数: 967 天

    [LV.10]以坛为家III

    发表于 2015-7-20 16:12:29 | 显示全部楼层

    羡慕楼主,的确是很羡慕,顶一下
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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