speedboy 发表于 2015-2-4 11:27:35

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

本帖最后由 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 ,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:
00574DAB|.64:8920       mov dword ptr fs:,esp
00574DAE|.8B45 FC       mov eax,
00574DB1|.E8 E2F5E8FF   call ScreenCa.00404398
00574DB6|.8D55 F0       lea edx,
00574DB9|.8BC7          mov eax,edi
00574DBB|.E8 60FFFFFF   call ScreenCa.00574D20
00574DC0|.8B45 F0       mov eax,
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,
00574DD6|.8BC7          |mov eax,edi
00574DD8|.E8 43FFFFFF   |call ScreenCa.00574D20
00574DDD|.8B45 E8       |mov eax,
00574DE0|.0FB64418 FF   |movzx eax,byte ptr ds:   ;》按字符循环读取用户名并转换成16进制数据
00574DE5|.8D4D EC       |lea ecx,
00574DE8|.33D2          |xor edx,edx
00574DEA|.E8 3145E9FF   |call ScreenCa.00409320
00574DEF|.8B55 EC       |mov edx,
00574DF2|.8D45 F8       |lea eax,
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,                        ;》把转换后的用户名(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,
00574E14|.E8 3FF8E8FF   |call ScreenCa.00404658
00574E19|.2BC3          |sub eax,ebx
00574E1B|.8B55 F8       |mov edx,
00574E1E|.8A1402      |mov dl,byte ptr ds:
00574E21|.8D45 E4       |lea eax,
00574E24|.E8 57F7E8FF   |call ScreenCa.00404580
00574E29|.8B55 E4       |mov edx,
00574E2C|.8D45 F4       |lea eax,
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,
00574E3B|.50            push eax
00574E3C|.B9 04000000   mov ecx,0x4
00574E41|.BA 01000000   mov edx,0x1
00574E46|.8B45 F4       mov eax,                        ;》把用户名数据(16进制)逆序输出到EAX(上面的循环是逆序实现过程)
00574E49|.E8 6AFAE8FF   call ScreenCa.004048B8
00574E4E|.8D45 F4       lea eax,
00574E51|.50            push eax
00574E52|.B9 04000000   mov ecx,0x4
00574E57|.BA 05000000   mov edx,0x5
00574E5C|.8B45 F4       mov eax,
00574E5F|.E8 54FAE8FF   call ScreenCa.004048B8                   ;》截取逆序字符窜的前四位
00574E64|.8B45 F8       mov eax,
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,
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,
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,
00574E92|.8D45 F8       |lea eax,
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,                        ;》把第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,
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,
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,
00574ECE|.8D45 F4       |lea eax,
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,
00574EDF|.50            push eax
00574EE0|.8B47 04       mov eax,dword ptr ds:         ;》把程序设定的固定字符窜赋给EAX
00574EE3|.B9 04000000   mov ecx,0x4
00574EE8|.BA 01000000   mov edx,0x1
00574EED|.E8 C6F9E8FF   call ScreenCa.004048B8                   ;》取固定字符窜的前四位
00574EF2|.FF75 D8       push
00574EF5|.68 5C4F5700   push ScreenCa.00574F5C                   ;-
00574EFA|.FF75 F8       push
00574EFD|.8D45 D4       lea eax,
00574F00|.50            push eax
00574F01|.8B47 04       mov eax,dword ptr ds:
00574F04|.B9 05000000   mov ecx,0x5
00574F09|.BA 05000000   mov edx,0x5
00574F0E|.E8 A5F9E8FF   call ScreenCa.004048B8                   ;》取固定字符窜的5-9位
00574F13|.FF75 D4       push
00574F16|.68 5C4F5700   push ScreenCa.00574F5C                   ;-
00574F1B|.FF75 F4       push
00574F1E|.8B45 FC       mov eax,
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:,edx
00574F33|.68 4D4F5700   push ScreenCa.00574F4D
00574F38|>8D45 D4       lea eax,
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位”

5ljf5cus 发表于 2015-2-6 19:34:32

楼主怎么没有注册机啊

非诚勿扰 发表于 2015-2-6 21:04:32

很给力,学习一下,感谢楼主分析精彩

hongjian2005 发表于 2015-2-6 21:20:28

PYG有你更精彩!想给楼主评分,显示今日为0,明天看看,先手工顶一下

飘云丶路人 发表于 2015-2-6 22:48:28

            值得多看   

cfc1680 发表于 2015-2-7 08:18:29

赞一个了,羡慕会算法的大神,收下学习一下了

iatbitw123 发表于 2015-2-7 10:54:38

学习一下,感谢楼主分析精彩

xiaowenyu 发表于 2015-2-7 11:51:12

不错 学习了

小影子 发表于 2015-2-7 17:10:04

很不错,我来看看,介意不{:soso_e133:}

qiusony 发表于 2015-2-7 18:12:36

论坛就是因为有这样前辈无私的教授,我们才会被吸引,谢谢
页: [1] 2 3 4
查看完整版本: 超级屏幕录像专家 V1.10(完全版)+注册机+算法分析