一个CM的分析
本帖最后由 ollydebug 于 2015-2-14 12:17 编辑这几天,我偶然找到了个CM,分析之后,才发现这个CM好强,于是我花了一些时间去破解,这是CM的截图。
首先,运行,发现运行后退出,还发现这个时候还可以注册,于是用给的正确的username和password,结果成功,附加之后却显示失败,所以可以断定,只有在被调试的情况下才会进入真正的验证,而且,还是在父进程创建子进程在子进程中进行的,而且父进程退出,这样非常不利于调试,所以要让他不退出,还能创建子进程,先用OD载入,F9、马上按F12,这时程序已经解码,查找所有模块间的调用,找退出API,来到这个地方,
向前找找到,
将他改成jmp,后面有一个创建线程函数,地址是00401BC0,去看一下,结果发现,里面还有一个创建线程API,地址是00401B80,再去那个地方看一下,
这个call非常可疑,于是F7进入去看一下,又把里面的call都看一下,结果看到了
在这个call里有这个API RtlComputeCrc32,看来,他进行了crc32校验,应该是防止脱壳用的,这个crc32的原值是0xDFE963A6,我们修改一下,
然后,我发现前面有一个跳转会跳过他,就是这个,nop掉
然后我们脱壳,用esp定律,结果无法打开,修复之后还是无法打开。算了,带壳破解。首先F9、马上F12,然后搜索Unicode,找到错误的字符串,来到这个地方
往下分析,结果除了Failed以外就找不到其他有用的东西(底下的创建线程API是让注册按钮响应的,没什么作用),那肯定是在前面有验证,去分析一下前面的call,果然,找到了这个,
在这个call里面,找到了
这个call,再进到里面,发现
好狡猾的程序,对一个函数进行了hook,那么,在这个时间,这个位置,傻子都知道这里面的东西肯定很重要,jmp到了这个地方
这里有一个创建线程函数,地址是00401A20,跟进去看看
这个push,肯定把什么东西推进了堆栈,先跟进一下这个call,结果发现了MD5,果然里面是算法,那么这个push的地址,就是注册的数据的地址,那么现在就可以爆破了,用正确的username和password,找到注册数据。
找到空白内存,把正确的数据拷贝进去,
最后,改变push地址
这样,无论如何push进去的都是正确注册数据,由于无法定位数据,就写补丁,这个是我弄的补丁
按F9、马上按F12,然后开始补丁,程序完美破解。
至于算法,我等会再弄,先分析到这里。这个CM真的很不错,听介绍说他是360做的,我不知道是真是假。还有,本人菜鸟,有错误之处请多多包涵。
算法来啦
另外,我发现最后校验MD5解密数据和MD5Success比较时,不等会跳到下面,
下面还有个MD5数据,是F5EA9514B1D55407B48836256078E349,后面还有个CRC32值是0x78141126,MD5数据在cmd5查了,是付费数据,所以恳请有cmd5会员账号的帮我查一下,谢谢。
这提供是360的招聘考题,是我和@零度x 出的,前面分析的给赞一个,不过这种push内容爆破按当时规则的话得分会很低,这个地方可以完全搞成没功能的了,贴几个之前同学的分析,可以一起交流:
360crackme一些有趣的地方和隐藏的彩蛋
http://www.52pojie.cn/thread-258967-1-1.html
《360安全招聘破解题CrackMe》题解
http://www.52pojie.cn/thread-257046-1-1.html
360CM解答
http://www.52pojie.cn/thread-257028-1-1.html
Hmily 发表于 2015-2-13 17:40
恩,解密hook跳转进去的那段内容里的。
对了,在最后校验MD5时不一致会跳到下面,有一堆赋值、有RtlComputeCrc32、ntdll还有一个MD5数据,这个是什么,难道是另一个成功MD5数据? 分析的不错
可以参考下面的帖子
《360安全招聘破解题CrackMe》题解 http://www.52pojie.cn/thread-257046-1-1.html (出处: 吾爱破解论坛) 希望以后多分享 CrackMe's / UnPackMe's 的分析 {:1_927:} 多分析,希望能多学到了咯{:17_1068:} 虽然没能完全看懂,但是还是很激动的谢谢楼主的辛勤劳动! 本来想再弄一个CM,结果电脑不好,老卡死,等那天我回家再分析 本帖最后由 ollydebug 于 2015-2-13 17:39 编辑
Hmily 发表于 2015-2-13 17:29
这提供是360的招聘考题,是我和@零度x 出的,前面分析的给赞一个,不过这种push内容爆破按当时规则的话得分 ...
我算法已分析出。还有crc32值好像是用来解密一段数据 ollydebug 发表于 2015-2-13 17:31
我算法已分析出。还有crc32值好像是用来解密一段数据
恩,解密hook跳转进去的那段内容里的。
页:
[1]
2