危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2306 浏览20614338

DNF外挂破解记

今天通过某种方式得到了一个叫做“飞鱼DNF自动收货”的外挂,趁着没下班破解了一下,没想到意外的简单。

首先,我向危险漫步咨询了下该外挂是使用什么语言写的。所谓知己知彼么,先混个脸熟。

此程序是用VB写的,P-Code,我对P-Code是一点不了解。不过不了解也照样可以破,因为程序是万变不离其宗的,只要掌握了程序在什么时候用了什么API函数,然后在掌握大概的流程,这个程序就能搞定。首先拿出OD加载这个外拄,按F9让他跑起来。如果跑不起来,说明你的OD被检查到了。这个外挂用到的检测方式比较古老,先说一下原理。首先在操作系统中不是所有进程都能用OpenProcess以PRO CES S_TERMIN ATE的权限打开的,比如exeplorer.exe和csrss,exe,如果想打开这两个进程,调用OpenProcess函数的进程,的令牌权限,必须是debug。而普通进程默认是没有debug权限的。在没有Debug权限的进程中使用OpenProcess打开exeplorer,exe和csrss.exe,的时候,会返回失败。用GetLastError荻取最后的错误,返回值是5,代表没有权限,去打开目标进程。当调试器调试一个程序的时候,首先要赋予这个程序的进程debug权限,但是这样问题就出现了。既然被赋予了debug权限,那么用OpenProcess以PROCESS__ TERMINATE的形式打开exeplorer.exe和csrss.exe的时候不就能成功了么?没错许多反调试代码就是这么做的。这个外挂也正是这样的。他先用进程快照的方式得到exeplorer.exe和csrss.exe的PID,然后使用OpenProcess以PROCESSTERMINATE的权限打开他们,并且检查失败代码,如果成功了,就说明自己被调试,程序结束。

但是这个外挂逻辑上不严谨,有个Bug,就是当Process32Next第一次执行就返回失败的时候,程序可以正常运行。也就是说让Process32Next返回假,就可以躲避检测。可以手动去改,也可以用OD插件。我的方法是下载52破解的OD,然后点击,插件---OLlv Advanced---Opeions。

然后,选择“反调试”选项卡,在Process32Next前面打勾,然后定。

然后重新启动.重新加载一下。再按F9就可以调试了。在注册那里随便输入点东西,点击注册会收到提示。

首先呢,这个东西是P-Code的,P-Code是Vm的前身,对这种东西我是没有研究。但是我知道,只要你注册,就需要数据的运算,一旦涉及到数据的运算,就不可避免的要访问数据,而数据的存储有很大几率是落在Data段的。所以我介绍一种方法,虽然不是百试百灵,但是对付眼前的这个外挂确实好用的。在OD上按下Alt-#-M,然后找到目标程序的data段,右键,设置内存访问断点。然后在外挂上输入假注册码,点击注册,此时Od断了下来,断下来的位置就是我们要找的,“注册”按钮所对应单击事件处理函数,此方法并不是万金油,也许下个程序就不好用了,关键是这种对付P-Code的思想。然后,就可以,右键一内存断点…删除内存断点了,接下来就是单步跟踪,快速浏览代码寻找有用的东西。

其中有一个jnz跳转,跳向004D0748,这个跨度是比较大的,前面都是一些很小的跳转,这个跳转跨度这么大,其中必有玄机。这个跳转本来是跳的,这里我不让他跳,把他,右键一二进制…用Nop填充,然后按F9运行,这回虽然提示错误,但是外挂的界面确实是弹出来了,说明这就是关键跳。

下面重新用OD加载,来到刚才那个004D0550的关键跳,为了让这个跳转不起作用,我们再次Nop掉他。然后单步跟踪。然后,右键一复制可执行文件一所有修改,在弹出的框中选“全部复制”。然后在弹出的窗口点击,右键一保存文件,在下保存成了“收货8-21b_破解001.exe”。然后双击“收货8- 21b-破解001.exe”,随便输入注册码,点击注册就能破解运行了,但是有个问题,被我画框框的地方,要求输入注册码,说明他还有一次验证,小小的软件还挺麻烦的。

在004D0482的这一行的后面,有一个网络地址,说明次货第一次的验证是网络验证。所以我猜测,他的第二次验证也是网络验证,用的还是同一个地址。所以,我就用OD打开收货8-21b破解001.exe运行,来到第二次检测验证码的那个界面。在OD上,右键…分析…分析代码,然后再,右键一查找…所有参考文本字串。然后在弹出的界面,右键…查找文本。搜索字符串“yanzheng.gotoipl.comjdfyu/chk2.asp”,并按Ctrl+L查找下一个,每找到一个,就下按一下F2,设置一个断点。我一共找到了4个,yanzheng.gotoipl.com/dfyu/chk2.asp然后F9让我们的破解目标跑起来,点一下外挂上的"F10启动”,此时OD就断下来了,看来我的猜测是对的。我又发现je跳转,跳向00760055,这个跳转相对于别的跳转,跨度是很大的,肯定有问题。这个跳转本来没有跳,我让他跳,把je改成jmp,变成下面的形式。然后老一套,右键一复制可执行文件一所有修改,在弹出的框中选“全部复制”。然后在弹出的窗口点击,右键一保存文件。在下保存成了“收货8-21b-破解002.exe”。运行一下,发现木有任何问题,破解成功。其实正统的破解方法是,对目标程序下GetWindowTextW和GetWindowTextA的断点,这个方法我也试过了,麻烦归麻烦,但好在管用。

相关推荐