申请标题:申请会员ID:Lijunlin7611【申请通过】
1、申 请 I D:Lijunlin7611
2、个人邮箱:Lijunlin7611@vip.qq.com
3、原创技术文章:MediaCoder 分析指南
声明一下,本文本来是有很多图片的,然后提交就是各种错误,结果上传的时候,全都失败了~哎,对Chrome支持不好啊~忧伤,将就看吧。
上传附件也是各种不成功,如果需要图,在看吧。到时候或则写成文档,再发。如果有些地方图错, 主要是图太多,上传全都是小图,看不到大图。
MediaCoder 分析,商业软件,仅供学习。
http://www.mediacoderhq.com/
需要的可以自己去下载最新版来分析学习。
先来一张图:
简单说一下这个软件的一些关键点:
软件没有加壳,适合分析。
验证方式:注册码网络认证,加密认证。
校验方式:计算程序MD5,然后和资源文件中的数据进行比对,判断文件是否存在修改。
软件中有很多的地方,都是可以作为教学点的,适合新手学习分析。
1、软件Nag框:
软件启动后,会有这个启动框,很烦人,很多的软件,未注册的等等,都会有这个启动框,比如说UltraISO等等。
去掉此框也很简单,既然是分析,这里从逆向和正向两个方向思考。
软件的Nag框,无非两种,一、MessageBox,二、Window
第一个:下断点MessageBoxExA\W,绝对逃不掉。其他的什么消息断点函数,自己逆向一下,可以看系统的底层调用就懂了。
第二个:既然是窗口,窗口要显示,然会用到函数UpdateWindow,在此处断点,自然能够搞定。
此软件自然也不例外,另外,同时开启两个,则会出现一下一个MessageBox,方法如上,断点,找到了,喜欢怎么改都行,注意好堆栈平衡即可。
。
比如说,我这里是就是这么改的,既可以解除不能同时运行两个的软件的问题,也能解决启动框的问题。
另外,这里提一下,上面有个CreateMutexA(不懂的去学学编程),所以改的方式多种多样。
2、网络ID验证:
既然是网路验证型,那么必然要联网的,这个大家不用说,就知道该用哪些函数去弄了。反正是网络连接要用的函数,大家都可以试试。
相信很简单,就能实践出来。
这里说说其他的方式,更简单点,也算是给新手一个快捷方向。
点击验证窗口,随便输入验证码,点击验证,可以看到红色框中的提示。
当然,搜索字符串自然是最简单的,先给个和谐图:
这个字符串提示信息,简直是非常和谐……但是,如果你搜索不到字符串呢?
你还怎么快速定位这个点?我们说说另外的方法,消息断点。
也就是上面图中的下面那两个函数调用:
GetDlgItem,SendMessageA。
当然,如果你学了编程,这两个函数,不用想也知道,在这里下条件断点。
有了这两个函数,问题来了,控件ID怎么得到呢?
spy++\ViewWizard\PeXplorer等等,很多的工具,可以让通过动态、静态的多种方式获得。
上个图,大概演示一下:
当然,找按钮事件等等,都是可以的,心情好,你也可以用F12来搞定它。
接下来继续分析,上面图中有很和谐的提示,分析即可看到
要求网络验证的返回值在eax中,且要为0,才算是通过。
自然,call 00446AF0,就是关键call
进去之后,可以看到文件的访问、注册表的访问,以及认证的网页地址等等。
当然, 中间还有个烦人的sleep,心情好,去掉即可。
修改返回值,自然是在函数返回的位置,可以跟踪一下。
懒得跟踪的人,可以看一下堆栈,分析可以知道,直接返回就可以了。
所以,修改函数头部代码如下:
xor eax,eax
retn
之后,网络验证这个就算是过了。
这里提一下,在验证这个函数之前,还有对注册ID的长度验证,以及计算MD5之类的,随便看看吧。
3、自校验:这个自校验也还算做得不错。
但是所有的自校验,都有个基本的特征,就是一定要首先取得当前文件的句柄,然后读取文件。
当然,也可以不停的内存校验,比如说很浪的lol这个游戏,想注入修改一下代码,可不简单。
必须要同时修改代码和校验值,然后才能做你想做的……当然,你想要知道校验值,就必须要知道其校验算法,
还有其校验的代码段,剩下的,就是你自己计算好修改后的代码校验值,然后再去改原来的代码,原来的校验值。
不然,就一定会提示你电脑中毒啦,不安全什么的……扯远了。想要挑战难度的,可以去试试。也算是练练基本功。
相比之下,这个校验,仅仅只是一个简单的文件Md5值校验。
先说一下思路:基本上就是取得文件句柄,打开文件,读取文件,计算文件MD5,校验文件内容。
翻译一下就是:GetModuleFileNameA->CreateFileA->GetFileSize->ReadFile->GetMD5->CheckMD5。
废话不多说,直接上图:
这里着重需要分析一下GetMd5的函数参数,为什么呢?看图。
分析可以看到,这里没有比较过程,或者比较函数的调用。而只是计算了文件的MD5,所以比较一定在其他地方。
但是在哪里呢?这个自然是不好找的。不过,硬件断点可以帮忙嘛。
分析参数得知,该函数,第一个参数是文件的大小,第二个参数是文件内容的缓冲区,第三个,则是返回来的MD5值。
不用说,这里自然是要对返回来的Md5值下硬件访问断点了,内存访问断点也是可以的。但这个是要分情况的。
比如说lol,人家本身就是硬件断点占坑,不停的异常,又不停的处理异常,这个时候,硬件断点就不好用了,
但使用内存断点就非常好用,当然,这也看个人习惯。
然后嘛,然程序跑起来,随便转换一个文件,转换结束的时候,会断下来,来到校验的地方。看图。
首先是传入两个Md5值,然后对其计算,至于算法分析,不是这里将的重点,
心情好,直接用IDA,F5一下看起来就舒服了,心情不好,慢慢虐一下,很简单,只要返回值为零就对了。
然后嘛,改一下返回值前面的那句话,xor esi,esi,世界就和谐了。
当然,分析到这里了,也自然能够看到,原始的文件MD5值在mcres.dll。
懒得改这里,或者不想让别人改你修改过的程序,直接把你改好的程序,计算个Md5值。
用winhex之类的16进制编辑工具,替换一下mcres.dll中的md5值就OK了。
剩下的,还有什么做计算题窗口啊,各种延迟啊,甚至打开浏览器访问网页啊,都可以自己分析一下,
自校验过了,程序就基本上随你改了。
另外,64 位版本的程序,分析流程和这个一样,改法也是一样的。随便改吧。
最后,上一张大结局:x86和x64的全家福。
ID:Lijunlin7611
邮箱:Lijunlin7611@vip.qq.com
申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。
ps:登录后把文章整理一下发到脱壳破解区吧。 账号已经激活了,过来报个到! 写得很深入,学习,mark 思路清晰,期待你在吾爱的表现,祝贺 写的非常好! 学习了,欢迎大神
页:
[1]