手机版

游戏外挂设计方法(9)

发布时间:2021-06-07   来源:未知    
字号:

游戏外挂设计方法

有了这层的认识,问题就好办多了,我们可以制作一个类似的动态链接库来代替原WinSock接口库,在其中实现WinSock32.dll中实现的所有函数,并保证所有函数的参数个数和顺序、返回值类型都应与原库相同。在这个自制作的动态库中,可以对我们感兴趣的函数(如发送、接收等函数)进行挡截,放入外挂控制代码,最后还继续调用原WinSock库中提供的相应功能函数,这样就可以实现对网络数据包的挡截、修改和发送等封包功能。

下面重点介绍创建挡截WinSock外挂程序的基本步骤:

(1) 创建DLL项目,选择Win32 Dynamic-Link Library,再选择An empty DLL project。

(2) 新建文件wsock32.h,按如下步骤输入代码:

① 加入相关变量声明:

HMODULE hModule=NULL; //模块句柄

char buffer[1000]; //缓冲区

FARPROC proc; //函数入口指针

② 定义指向原WinSock库中的所有函数地址的指针变量,因WinSock库共提供70多个函数,限于篇幅,在此就只选择几个常用的函数列出,有关这些库函数的说明可参考MSDN相关内容。

//定义指向原WinSock库函数地址的指针变量。

SOCKET (__stdcall *socket1)(int ,int,int);//创建Sock函数。

int (__stdcall *WSAStartup1)(WORD,LPWSADATA);//初始化WinSock库函数。

int (__stdcall *WSACleanup1)();//清除WinSock库函数。

int (__stdcall *recv1)(SOCKET ,char FAR * ,int ,int );//接收数据函数。

int (__stdcall *send1)(SOCKET ,const char * ,int ,int);//发送数据函数。

int (__stdcall *connect1)(SOCKET,const struct sockaddr *,int);//创建连接函数。 int (__stdcall *bind1)(SOCKET ,const struct sockaddr *,int );//绑定函数。

......其它函数地址指针的定义略。

(3) 新建wsock32.cpp文件,按如下步骤输入代码:

① 加入相关头文件声明:

#include

#include

#include "wsock32.h"

② 添加DllMain函数,在此函数中首先需要加载原WinSock库,并获取此库中所有函数的地址。代码如下:

BOOL WINAPI DllMain (HANDLE hInst,ULONG ul_reason_for_call,LPVOID lpReserved) {

游戏外挂设计方法(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)