游戏外挂用过,但是有没多少人知道怎么去实现,既然我们都是草根程序员,没那钱去买那就自己去写。外挂据我的了解最简单的一种就是模拟鼠标点击。比如MM们都喜欢玩的那种连连看游戏只要鼠标点击就OK了,所以只需要正确的模拟鼠标点击就行了。分析出游戏内存然后再正确的位置去模拟鼠标点击就能在一秒以内完成连连看。还有比较高级点的就是分析出游戏相关的Call然后去将远程代码注入到游戏进程空间中,将远程代码做为游戏进程代码的一部分去执行就行了。当然是执行分析的Call。后一种比较麻烦,功能也比较强大,不仅要了解windows API,还得了解基本的操作系统原理和分页机制,然后还要会汇编编程,当然能实现高级的外挂。第一种只要了解Windows API就行了。
但是不管哪种方式我们都需要分析进程内存,我们写外挂是不知道程序的源代码,能了解到的就是汇编编译器放汇编出的汇编代码(以后再说)。最主要我们需要知道我们感兴趣的东西放在进程空间的哪个内存地址中(这里的内存肯定不是物理内存,现在的一般32位系统都是在保护模式下的而非实模式)。为了查找内容放在的内存地址,我要介绍一款内存神器,这是外挂界的法宝之一,CE。CE不仅能查看内存还能修改内存内容。我们现在就开始学习CE的使用技巧。这里就以QQ为例吧。查出QQ消息发送之前的信息放在内存的什么地方。查到了我们就可以动态修改发送之前的消息,这样我们就可以发送我们想要的任何信息而不需要通过qq.首先打开QQ发送窗口写一些信息,就写“Egojit”,打开神器CE。界面如下:
第一步:点击小电脑打开进程列表附件我们的QQ进程。
第二步:点击打开我们附加的QQ进程
第三步:(如下图)在数值中输入我们在QQ消息发送框中输入的"Egojit"
第四步:点击CE中的首次扫描(一定要选字符串)
首次扫描后悔出现很多内存中都有“Egojit”这时候我们需要做的就是第五步
第五步:改变QQ发送框中的信息为"Egojit1",并且修改文本为“Egojit1”,别点击“新的扫描”,而是点击“再次扫描”。再次扫描就是在第一次的结果上再筛选
这次得到一个地址
为了确保准确信,可以多改变几次QQ发送框中的信息,然后再次搜索。我们双击结果。将它放到下面的CE下面的空白备选区中(我这么叫的)。
当查询结果通过双击加到备选区后。我们修改备选区的值。双击备选区的值字段弹出修改内存窗体。记住必须双击值部分,双击其它部分例如类型或者地址字段都是不行的。将“Egojit1”修改成“gaolu123”,你成功的将内存中的改变了,并且消息框中的值也被改变了。可以以外的发现少了一个3
这是为什么呢??其实很容易理解。因为请对比修改前的类型和修改后的类型一个是String[7],修改后的是String[8]。这个时候你会知道QQ消息显示框有一种限制,就是防止这种修改发送。(个人猜测)。不用怕。既然有限制,那么QQ内存中肯定有相关的存储计数器。再通过CE去查询,这个时候不是查询字符串了,这个时候查询int.而且查询是一次新的查询。以上种种都是猜测。这个时候用CE去验证猜测。QQ发送框中现在有“gaolu12”,数一下是7个字符。第一次查询:
大家看到查询结果中查询后有其它值,其实不是,在我第一次查询的时候只有7,只不过在我截图的这段时间中有些内存的值改变了所以就有0了。这个不用管。我们再次筛选删除掉QQ发送框中的一个字符这个时候计数器应该是6我们再次筛选6
大家很容易看到第二次筛选后还有14条结果。我们继续这样筛选。最后我们不管怎么筛选都还有11个结果。
而且我们动态去修改QQ发送框的字符个数,你发现这写内存都跟着变化。那我们就大胆猜测这些内存就是计数器,只不过不同的内存做着不同的约束。我们不用管,我们绕过这些约束,修改所有的技术器。这样我们将这些技术器的数据修改成和上面修改的消息类型例如类型String[8]那么就将计数器中的2全部改成8这样,QQ发送框中你不需要做任何修改。但是QQ发送框中的消息被修改了。这样我们就很容易去利用进程注入去修改这些内存,然后……。当然是你想干什么就干什么,任你摆布了。
我们找出是什么访问消息内存。当然我们在qq消息框中击发送时肯定访问了这块内存,因为发送消息出去,发送的就是我们查询出的消息内存中的内容。我们找到这段汇编代码。找到它的CALL我们就可以实现一个自动发送QQ信息的外挂了。这个后面在继续……。如果认真看了并且实验了,我相信你已经基本上会使用CE了。恭喜你,开始了解一点本质了。