Warning: preg_match(): Unknown modifier '>' in /www/wwwroot/www.jiamigoupojie.cn/wp-content/themes/module/themer/functions/content-filter.php on line 13

某屏幕广播 算法分析


Warning: preg_match(): Unknown modifier '>' in /www/wwwroot/www.jiamigoupojie.cn/wp-content/themes/module/themer/functions/content-filter.php on line 13
前段时间由于项目问题以及杂七杂八的事情,没有什么时间学习算法分析。不过本人算法分析也是相当的菜,难的还

在学习当中,正好遇到一个简单的算法程序,拿来和大家一起分享。

  算法关键位置查找过程:

1、运行程序,点击【注册】菜单。
注册对话框信息:机器码为【1551133666】。

 随便输入注册码【123456】,点击【注册(R)】按钮,没有任何反应。不过程序文件夹内,产生一个文件【sset.ini】。

打开一看,发现注册码是存放在这个文件内的。(regnum=123456)。
尝试了几次,都没有任何提示,所以软件可能是重启验证的。后来发现,如果软件提示注册成功,其实是假注册成功
现象。真正注册成功是没有任何提示,并且软件重新启动才验证的。成功注册后,菜单中不会再出现【注册】菜单项目了。

2、对于INI小型文件,一般用API函数【GetPrivateProfileStringA】进行读取的。如果文件超大,最好自己进行解析。
因为这个API会重复进行文件的打开和关闭,效率较低。
OD载入程序,下断GetPrivateProfileStringA,运行F9。当进行项【regnum】读取时,去除断点,Alt + F9返回。
【返回代码】


00402B41 . 50 push eax ; /IniFileName => “C:\Documents and Settings\zhoujq\”,D7,”烂鎈xxx\xxx\sset.ini”
00402B42 . 6A 00 push 0 ; |Default = 0
00402B44 . 68 28D34000 push 0040D328 ; |Key = “regnum”
00402B49 . 68 20D34000 push 0040D320 ; |Section = “setting”
00402B4E . FFD3 call ebx ; \GetPrivateProfileIntA
00402B50 . 6A 00 push 0 ; /pFileSystemNameSize = NULL
00402B52 . 6A 00 push 0 ; |pFileSystemNameBuffer = NULL
00402B54 . 8DB5 28010000 lea esi, dword ptr [ebp+128] ; |
00402B5A . 6A 00 push 0 ; |pFileSystemFlags = NULL
00402B5C . 6A 00 push 0 ; |pMaxFilenameLength = NULL
00402B5E . 56 push esi ; |pVolumeSerialNumber
00402B5F . 6A 00 push 0 ; |MaxVolumeNameSize = 0
00402B61 . 6A 00 push 0 ; |VolumeNameBuffer = NULL
00402B63 . 68 1CD34000 push 0040D31C ; |RootPathName = “c:\”
00402B68 . 8BF8 mov edi, eax ; |
00402B6A . FF15 48B04000 call dword ptr [<&KERNEL32.GetVolumeInfo>; \GetVolumeInformationA
00402B70 . 8B0E mov ecx, dword ptr [esi]
00402B72 . 57 push edi
00402B73 . 51 push ecx
00402B74 . E8 77F8FFFF call 004023F0
00402B79 . 8945 74 mov dword ptr [ebp+74], eax
00402B7C . 8B15 28E74000 mov edx, dword ptr [40E728]
00402B82 . 8B3D 2CE74000 mov edi, dword ptr [40E72C]
00402B88 . A1 30E74000 mov eax, dword ptr [40E730]
00402B8D . 83C4 08 add esp, 8
00402B90 . 894424 18 mov dword ptr [esp+18], eax
00402B94 . A1 50E74000 mov eax, dword ptr [40E750]
00402B99 . F7DA neg edx
00402B9B . 1BD2 sbb edx, edx
00402B9D . 23D7 and edx, edi
00402B9F . 33FF xor edi, edi
00402BA1 . 3BC7 cmp eax, edi
00402BA3 . 895424 14 mov dword ptr [esp+14], edx
00402BA7 . 74 11 je short 00402BBA
00402BA9 . C74424 1C 010>mov dword ptr [esp+1C], 1
00402BB1 . 8B48 20 mov ecx, dword ptr [eax+20]
00402BB4 . 894C24 20 mov dword ptr [esp+20], ecx
00402BB8 . EB 08 jmp short 00402BC2
00402BBA > 897C24 1C mov dword ptr [esp+1C], edi
00402BBE . 897C24 20 mov dword ptr [esp+20], edi
00402BC2 > 8B15 3CE74000 mov edx, dword ptr [40E73C]
00402BC8 . 8D4424 14 lea eax, dword ptr [esp+14]
00402BCC . 50 push eax
00402BCD . 895424 28 mov dword ptr [esp+28], edx
00402BD1 . E8 54740000 call
00402BD6 . 3BC7 cmp eax, edi
00402BD8 . 74 0E je short 00402BE8
00402BDA . 50 push eax
00402BDB . 68 0CD34000 push 0040D30C
00402BE0 . E8 1BF9FFFF call 00402500
00402BE5 . 83C4 08 add esp, 8
00402BE8 > 8B0D 44E74000 mov ecx, dword ptr [40E744]
00402BEE . 51 push ecx
00402BEF . 57 push edi
00402BF0 . 68 28D34000 push 0040D328 ; ASCII “regnum”
00402BF5 . 68 20D34000 push 0040D320 ; ASCII “setting”
00402BFA . FFD3 call ebx ; eax=假码
00402BFC . 8B16 mov edx, dword ptr [esi]
00402BFE . 50 push eax ; 假码
00402BFF . 52 push edx ; 机器码
00402C00 . E8 3BFBFFFF call 00402740 ; 这边出现正码
00402C05 . 83C4 08 add esp, 8
00402C08 . 3BC7 cmp eax, edi
00402C0A . 8945 78 mov dword ptr [ebp+78], eax
00402C0D . 5B pop ebx
00402C0E . 75 31 jnz short 00402C41 ; 注册成功则跳
00402C10 . 8D4424 7C lea eax, dword ptr [esp+7C]
00402C14 . 66:893D 4CE74>mov word ptr [40E74C], di
00402C1B . A3 48E74000 mov dword ptr [40E748], eax


下面代码略

相关推荐

发表评论

您的电子邮箱地址不会被公开。

QQ点我咨询