编程软件:这个无所谓吧,不过我这里用的是c++ builder 6,前段时间做cb 6相关的项目,而且cb 对于程序界面的编写是最方便不过的了,就是编译的有点慢和生成的程序有点大。(旁白:又不是做手机项目,担心容量吗?)我做受限程序做惯了,养成了不良习惯,没办法了。
思路:我们的程序要干扰别的程序的运行,最好的办法是使用debug的办法,不过,我并没有打算使用debug的办法,我对程序的debug并不太熟悉,而且讨厌编写没用的代码。我准备采用线程注入的办法,至于线程注入,和为什么要线程注入才能干预,这方面的知识最好自己看看《windows 核心编程》里面讲的,否则这个教程要没完没了了。当我们的线程注入到目标程序之后就方便多了,就可以为所欲为了。因此我们的第一目的是将线程注入到目标程序中。
预备活动:
线程注入最简单的莫过于hook了,如果连这都不知道的话,最好赶快到网上查查或者翻翻《windows核心编程》。为了防止游戏内部存在反hook的存在和外挂的检测,我将用自己的程序来启动目标程序。由于网游的不定期更新,因此在启动程序的时候最好将升级跳过去,至少在大话这样的程序中我是这样做的,因为频繁升级和版本检测总让我等的时间太长。
下面来进行具体的做法,我尽可能的弄出详细的步骤,如果你用的是vc或者其它的话,只要注意核心的代码就可以了。
新建一个工程,在窗体上添加两个按钮(tbutton或者其它类型的按钮),一个将标题改为启动游戏,另一个标题改为启动外挂。再添加一个topendialog。对于默认的窗体那么大的界面有点浪费,因此将窗体弄得小点,别大大的怪吓人的。
双点启动游戏的按钮就可以进行编写该按钮的事件了,默认的是onclick事件。下面就是事件的代码:
if(fileexists(extractfiledir(application->exename)+"\\path.ini")==false)