赞
踩
现如今,有很多游戏外挂软件,它们可以修改游戏显示的数据和内部代码,来达到谋取利益的目的。在实现反外挂技术前,我先介绍一下常见的三种外挂:
1.模拟类外挂:该外挂可以说是最早的外挂了,它是往游戏发送伪造的按键消息来模拟人的手工操作。实现的思路为:
1.
在Ring3层使用SendMassage、PostMassage、keybd_event、mouse_event等向消息队列中发送按键消息
2.
使用回调函数KeyboardClassServiceCallback和MouseClassServiceCallback往类驱动输入摁键消息。
2.内部Call调用外挂:使用逆向技术分析出游戏内部的汇编代码,把里面对游戏玩家有利的函数作为外挂的实现功能。实现的思路为:
1.
使用逆向工具,去除壳和里面的反调试功能
2.
分析游戏的使用过程、玩家自身的信息、背包信息、敌人信息等
3.
逆向分析出游戏的明文发包功能
4.
根据游戏的明文发包函数和报文信息分析游戏内部功能实现的函数
3.脱机外挂:分析出游戏客户端和服务端之间的通信逻辑,使用自己发送和接受数据来跟服务端进行交互。实现的思路如下:
1.
使用逆向工具,去除壳和里面的反调试功能
2.
逆向分析游戏中的汇编代码,分析出加解密算法及各种资源信息
3.
分析出登录封包,获取各种跟游戏相关的信息
4.
整合寻路算法,实现挂机
1.最近玩植物大战僵尸和连连看等游戏的时候发现,这些游戏需要通过启动程序才能正常运行,那么我突发奇想,如果在程序运行前,修改游戏中的部分代码段数据,等需要运行游戏时再通过另一个程序恢复代码段数据,那么就可以起到保护游戏的作用。
2.对于游戏外挂制作者,他们经常习惯性的使用OD工具和CE工具、ida工具等,找出游戏的基址数据(也为全局变量)和内部call,然后修改基址数据或者修改执行流程,调用内部call。那么在游戏运行前就对基址数据地址和某些call后接地址进行修改,等需要运行游戏时,再修改回基址地址和call调用的地址,就可以起到反外挂的作用。
3.接下来,介绍一下这样做的作用:
4.简单介绍一下实现的流程:
1.读取PE文件信息到内存中,遍历PE文件中的代码段,找到函数头部地址和使用的全局变量地址;
2.在代码段中,找出调用函数的call指令,把call后接地址进行修改,对于数据,找到使用全局变量的mov指令,修改地址操作数;
3.运行时,使用CreateProcess函数创建线程并挂起,然后恢复代码段中的数据并运行进程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。