对反游戏外挂技术的思考及实现

本文探讨了反游戏外挂的多种技术,包括保护call函数和基址数据、检测代码段变化、HOOK检测、多开及动态调试工具检测,以及添加反调试方法。通过模拟这些过程,开发了一款反游戏外挂工具,旨在防止游戏被篡改和非法调用,保护游戏公平性。
摘要由CSDN通过智能技术生成

前言

现如今,有很多游戏外挂软件,它们可以修改游戏显示的数据和内部代码,来达到谋取利益的目的。在实现反外挂技术前,我先介绍一下常见的三种外挂:
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函数创建线程并挂起,然后恢复代码段中的数据并运行进程

  • 27
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值