飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 12605|回复: 34

[原创] 超级屏幕录像专家 V1.10(完全版)+注册机+算法分析

[复制链接]
  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 1483 天

    [LV.10]以坛为家III

    发表于 2015-2-4 11:27:35 | 显示全部楼层 |阅读模式
    本帖最后由 speedboy 于 2015-2-4 12:54 编辑

    具体分析过程

    1、OD加载程序后,查找字符窜“注册码不正确,请检查注册码是否输错!”,找到后双击来到反汇编程序(如图),上面的jnz判断判断是否注册,其上的Call就是调用计算注册码过程,在此Call处F2下断点,然后F9运行到此Call处,F7跟进分析。


    2、F8跟进,直到下图Call调用处(如图)F7跟进


    3、算法Call分析

    00574D88  /$  55            push ebp
    00574D89  |.  8BEC          mov ebp,esp
    00574D8B  |.  B9 05000000   mov ecx,0x5
    00574D90  |>  6A 00         /push 0x0
    00574D92  |.  6A 00         |push 0x0
    00574D94  |.  49            |dec ecx
    00574D95  |.^ 75 F9         \jnz XScreenCa.00574D90
    00574D97  |.  51            push ecx
    00574D98  |.  53            push ebx
    00574D99  |.  56            push esi
    00574D9A  |.  57            push edi
    00574D9B  |.  8955 FC       mov [local.1],edx
    00574D9E  |.  8BF8          mov edi,eax
    00574DA0  |.  33C0          xor eax,eax
    00574DA2  |.  55            push ebp
    00574DA3  |.  68 464F5700   push ScreenCa.00574F46
    00574DA8  |.  64:FF30       push dword ptr fs:[eax]
    00574DAB  |.  64:8920       mov dword ptr fs:[eax],esp
    00574DAE  |.  8B45 FC       mov eax,[local.1]
    00574DB1  |.  E8 E2F5E8FF   call ScreenCa.00404398
    00574DB6  |.  8D55 F0       lea edx,[local.4]
    00574DB9  |.  8BC7          mov eax,edi
    00574DBB  |.  E8 60FFFFFF   call ScreenCa.00574D20
    00574DC0  |.  8B45 F0       mov eax,[local.4]
    00574DC3  |.  E8 90F8E8FF   call ScreenCa.00404658
    00574DC8  |.  8BF0          mov esi,eax
    00574DCA  |.  85F6          test esi,esi
    00574DCC  |.  7E 30         jle XScreenCa.00574DFE
    00574DCE  |.  BB 01000000   mov ebx,0x1
    00574DD3  |>  8D55 E8       /lea edx,[local.6]
    00574DD6  |.  8BC7          |mov eax,edi
    00574DD8  |.  E8 43FFFFFF   |call ScreenCa.00574D20
    00574DDD  |.  8B45 E8       |mov eax,[local.6]
    00574DE0  |.  0FB64418 FF   |movzx eax,byte ptr ds:[eax+ebx-0x1]     ;  》按字符循环读取用户名并转换成16进制数据
    00574DE5  |.  8D4D EC       |lea ecx,[local.5]
    00574DE8  |.  33D2          |xor edx,edx
    00574DEA  |.  E8 3145E9FF   |call ScreenCa.00409320
    00574DEF  |.  8B55 EC       |mov edx,[local.5]
    00574DF2  |.  8D45 F8       |lea eax,[local.2]
    00574DF5  |.  E8 66F8E8FF   |call ScreenCa.00404660
    00574DFA  |.  43            |inc ebx
    00574DFB  |.  4E            |dec esi
    00574DFC  |.^ 75 D5         \jnz XScreenCa.00574DD3
    00574DFE  |>  8B45 F8       mov eax,[local.2]                        ;  》把转换后的用户名(16进制)赋给EAX
    00574E01  |.  E8 52F8E8FF   call ScreenCa.00404658
    00574E06  |.  8BF0          mov esi,eax
    00574E08  |.  85F6          test esi,esi
    00574E0A  |.  7E 2C         jle XScreenCa.00574E38
    00574E0C  |.  BB 01000000   mov ebx,0x1
    00574E11  |>  8B45 F8       /mov eax,[local.2]
    00574E14  |.  E8 3FF8E8FF   |call ScreenCa.00404658
    00574E19  |.  2BC3          |sub eax,ebx
    00574E1B  |.  8B55 F8       |mov edx,[local.2]
    00574E1E  |.  8A1402        |mov dl,byte ptr ds:[edx+eax]
    00574E21  |.  8D45 E4       |lea eax,[local.7]
    00574E24  |.  E8 57F7E8FF   |call ScreenCa.00404580
    00574E29  |.  8B55 E4       |mov edx,[local.7]
    00574E2C  |.  8D45 F4       |lea eax,[local.3]
    00574E2F  |.  E8 2CF8E8FF   |call ScreenCa.00404660
    00574E34  |.  43            |inc ebx
    00574E35  |.  4E            |dec esi
    00574E36  |.^ 75 D9         \jnz XScreenCa.00574E11
    00574E38  |>  8D45 F8       lea eax,[local.2]
    00574E3B  |.  50            push eax
    00574E3C  |.  B9 04000000   mov ecx,0x4
    00574E41  |.  BA 01000000   mov edx,0x1
    00574E46  |.  8B45 F4       mov eax,[local.3]                        ;  》把用户名数据(16进制)逆序输出到EAX(上面的循环是逆序实现过程)
    00574E49  |.  E8 6AFAE8FF   call ScreenCa.004048B8
    00574E4E  |.  8D45 F4       lea eax,[local.3]
    00574E51  |.  50            push eax
    00574E52  |.  B9 04000000   mov ecx,0x4
    00574E57  |.  BA 05000000   mov edx,0x5
    00574E5C  |.  8B45 F4       mov eax,[local.3]
    00574E5F  |.  E8 54FAE8FF   call ScreenCa.004048B8                   ;  》截取逆序字符窜的前四位
    00574E64  |.  8B45 F8       mov eax,[local.2]
    00574E67  |.  E8 ECF7E8FF   call ScreenCa.00404658                   ;  》截取逆序字符窜的5-8位
    00574E6C  |.  83F8 04       cmp eax,0x4
    00574E6F  |.  7D 2F         jge XScreenCa.00574EA0
    00574E71  |.  8B45 F8       mov eax,[local.2]
    00574E74  |.  E8 DFF7E8FF   call ScreenCa.00404658
    00574E79  |.  8BD8          mov ebx,eax
    00574E7B  |.  83FB 03       cmp ebx,0x3
    00574E7E  |.  7F 20         jg XScreenCa.00574EA0
    00574E80  |>  8D4D E0       /lea ecx,[local.8]
    00574E83  |.  8BC3          |mov eax,ebx
    00574E85  |.  C1E0 02       |shl eax,0x2
    00574E88  |.  33D2          |xor edx,edx
    00574E8A  |.  E8 9144E9FF   |call ScreenCa.00409320
    00574E8F  |.  8B55 E0       |mov edx,[local.8]
    00574E92  |.  8D45 F8       |lea eax,[local.2]
    00574E95  |.  E8 C6F7E8FF   |call ScreenCa.00404660
    00574E9A  |.  43            |inc ebx
    00574E9B  |.  83FB 04       |cmp ebx,0x4
    00574E9E  |.^ 75 E0         \jnz XScreenCa.00574E80
    00574EA0  |>  8B45 F4       mov eax,[local.3]                        ;  》把第5-8位字符窜赋给EAX
    00574EA3  |.  E8 B0F7E8FF   call ScreenCa.00404658
    00574EA8  |.  83F8 04       cmp eax,0x4
    00574EAB  |.  7D 2F         jge XScreenCa.00574EDC
    00574EAD  |.  8B45 F4       mov eax,[local.3]
    00574EB0  |.  E8 A3F7E8FF   call ScreenCa.00404658
    00574EB5  |.  8BD8          mov ebx,eax
    00574EB7  |.  83FB 03       cmp ebx,0x3
    00574EBA  |.  7F 20         jg XScreenCa.00574EDC
    00574EBC  |>  8D4D DC       /lea ecx,[local.9]
    00574EBF  |.  8BC3          |mov eax,ebx
    00574EC1  |.  C1E0 02       |shl eax,0x2
    00574EC4  |.  33D2          |xor edx,edx
    00574EC6  |.  E8 5544E9FF   |call ScreenCa.00409320
    00574ECB  |.  8B55 DC       |mov edx,[local.9]
    00574ECE  |.  8D45 F4       |lea eax,[local.3]
    00574ED1  |.  E8 8AF7E8FF   |call ScreenCa.00404660
    00574ED6  |.  43            |inc ebx
    00574ED7  |.  83FB 04       |cmp ebx,0x4
    00574EDA  |.^ 75 E0         \jnz XScreenCa.00574EBC
    00574EDC  |>  8D45 D8       lea eax,[local.10]
    00574EDF  |.  50            push eax
    00574EE0  |.  8B47 04       mov eax,dword ptr ds:[edi+0x4]           ;  》把程序设定的固定字符窜赋给EAX
    00574EE3  |.  B9 04000000   mov ecx,0x4
    00574EE8  |.  BA 01000000   mov edx,0x1
    00574EED  |.  E8 C6F9E8FF   call ScreenCa.004048B8                   ;  》取固定字符窜的前四位
    00574EF2  |.  FF75 D8       push [local.10]
    00574EF5  |.  68 5C4F5700   push ScreenCa.00574F5C                   ;  -
    00574EFA  |.  FF75 F8       push [local.2]
    00574EFD  |.  8D45 D4       lea eax,[local.11]
    00574F00  |.  50            push eax
    00574F01  |.  8B47 04       mov eax,dword ptr ds:[edi+0x4]
    00574F04  |.  B9 05000000   mov ecx,0x5
    00574F09  |.  BA 05000000   mov edx,0x5
    00574F0E  |.  E8 A5F9E8FF   call ScreenCa.004048B8                   ;  》取固定字符窜的5-9位
    00574F13  |.  FF75 D4       push [local.11]
    00574F16  |.  68 5C4F5700   push ScreenCa.00574F5C                   ;  -
    00574F1B  |.  FF75 F4       push [local.3]
    00574F1E  |.  8B45 FC       mov eax,[local.1]
    00574F21  |.  BA 06000000   mov edx,0x6
    00574F26  |.  E8 EDF7E8FF   call ScreenCa.00404718
    00574F2B  |.  33C0          xor eax,eax
    00574F2D  |.  5A            pop edx
    00574F2E  |.  59            pop ecx
    00574F2F  |.  59            pop ecx
    00574F30  |.  64:8910       mov dword ptr fs:[eax],edx
    00574F33  |.  68 4D4F5700   push ScreenCa.00574F4D
    00574F38  |>  8D45 D4       lea eax,[local.11]
    00574F3B  |.  BA 0A000000   mov edx,0xA
    00574F40  |.  E8 77F4E8FF   call ScreenCa.004043BC
    00574F45  \.  C3            retn
    00574F46   .^ E9 91EDE8FF   jmp ScreenCa.00403CDC
    00574F4B   .^ EB EB         jmp XScreenCa.00574F38
    00574F4D   .  5F            pop edi
    00574F4E   .  5E            pop esi
    00574F4F   .  5B            pop ebx
    00574F50   .  8BE5          mov esp,ebp
    00574F52   .  5D            pop ebp
    00574F53   .  C3            retn

    4、合成注册码
    “固定字符窜前4位”-“用户名得到的逆序字符窜前四位+固定字符窜的5-9位”-“用户名得到的逆序字符窜的5-8位”

    点评

    支持破文  发表于 2015-2-5 22:47

    评分

    参与人数 7威望 +28 飘云币 +20 收起 理由
    小影子 + 4 PYG有你更精彩!
    cfc1680 + 8 + 8 赞一个!
    飘云丶路人 + 4 很给力!
    5ljf5cus + 4 PYG有你更精彩!
    OMG + 4 PYG有你更精彩!
    hackhaa + 4 很给力!
    回忆无法挽留 + 12 赞一个!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2019-12-9 21:54
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-2-6 19:34:32 | 显示全部楼层
    楼主怎么没有注册机啊
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 2059 天

    [LV.Master]伴坛终老

    发表于 2015-2-6 21:04:32 | 显示全部楼层
    很给力,学习一下,感谢楼主分析精彩
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 1851 天

    [LV.Master]伴坛终老

    发表于 2015-2-6 21:20:28 | 显示全部楼层
    PYG有你更精彩!想给楼主评分,显示今日为0,明天看看,先手工顶一下
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2017-11-11 17:26
  • 签到天数: 189 天

    [LV.7]常住居民III

    发表于 2015-2-6 22:48:28 | 显示全部楼层
                值得多看   
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 1432 天

    [LV.10]以坛为家III

    发表于 2015-2-7 08:18:29 | 显示全部楼层
    赞一个了,羡慕会算法的大神,收下学习一下了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-8-23 09:25
  • 签到天数: 86 天

    [LV.6]常住居民II

    发表于 2015-2-7 10:54:38 | 显示全部楼层
    学习一下,感谢楼主分析精彩
    PYG19周年生日快乐!
  • TA的每日心情

    2015-11-15 17:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-2-7 11:51:12 | 显示全部楼层
    不错 学习了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2015-2-7 17:10:04 | 显示全部楼层
    很不错,我来看看,介意不{:soso_e133:}
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2015-2-7 18:12:36 | 显示全部楼层
    论坛就是因为有这样前辈无私的教授,我们才会被吸引,谢谢
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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