当前位置:   article > 正文

对反游戏外挂技术的思考及实现_反外挂程序开发

反外挂程序开发

前言

现如今,有很多游戏外挂软件,它们可以修改游戏显示的数据和内部代码,来达到谋取利益的目的。在实现反外挂技术前,我先介绍一下常见的三种外挂:
1.模拟类外挂:该外挂可以说是最早的外挂了,它是往游戏发送伪造的按键消息来模拟人的手工操作。实现的思路为:

1.在Ring3层使用SendMassage、PostMassage、keybd_event、mouse_event等向消息队列中发送按键消息

2.使用回调函数KeyboardClassServiceCallback和MouseClassServiceCallback往类驱动输入摁键消息。

 2.内部Call调用外挂:使用逆向技术分析出游戏内部的汇编代码,把里面对游戏玩家有利的函数作为外挂的实现功能。实现的思路为:

1.使用逆向工具,去除壳和里面的反调试功能

2.分析游戏的使用过程、玩家自身的信息、背包信息、敌人信息等

3.逆向分析出游戏的明文发包功能

4.根据游戏的明文发包函数和报文信息分析游戏内部功能实现的函数

 3.脱机外挂:分析出游戏客户端和服务端之间的通信逻辑,使用自己发送和接受数据来跟服务端进行交互。实现的思路如下:

1.使用逆向工具,去除壳和里面的反调试功能

2.逆向分析游戏中的汇编代码,分析出加解密算法及各种资源信息

3.分析出登录封包,获取各种跟游戏相关的信息

4.整合寻路算法,实现挂机

保护call函数和基址数据

1.最近玩植物大战僵尸和连连看等游戏的时候发现,这些游戏需要通过启动程序才能正常运行,那么我突发奇想,如果在程序运行前,修改游戏中的部分代码段数据,等需要运行游戏时再通过另一个程序恢复代码段数据,那么就可以起到保护游戏的作用。

2.对于游戏外挂制作者,他们经常习惯性的使用OD工具和CE工具、ida工具等,找出游戏的基址数据(也为全局变量)和内部call,然后修改基址数据或者修改执行流程,调用内部call。那么在游戏运行前就对基址数据地址和某些call后接地址进行修改,等需要运行游戏时,再修改回基址地址和call调用的地址,就可以起到反外挂的作用。

3.接下来,介绍一下这样做的作用:

4.简单介绍一下实现的流程:

1.读取PE文件信息到内存中,遍历PE文件中的代码段,找到函数头部地址和使用的全局变量地址;

2.在代码段中,找出调用函数的call指令,把call后接地址进行修改,对于数据,找到使用全局变量的mov指令,修改地址操作数;

3.运行时,使用CreateProcess函数创建线程并挂起,然后恢复代码段中的数据并运行进程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/905963
推荐阅读
相关标签
  

闽ICP备14008679号