ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:24.06KB ,
资源ID:20566206      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20566206.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(游戏辅助制作原理Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

游戏辅助制作原理Word下载.docx

1、这类辅助程序也是当前最流利的一类游戏辅助程序。另外,现在很多辅助程序功能强大,不仅实现了自动动作代理和封包功能,而且还提供了对网络游戏的客户端程序的数据进展修改,以到达欺骗网络游戏效劳器的目的。我相信,随着网络游戏商家的反辅助技术的进展,游戏辅助将会产生更多更优秀的技术,让我们期待着看场技术大战吧.三、辅助技术综述可以将开发游戏辅助程序的过程大体上划分为两个局部:前期局部工作是对辅助的主体游戏进展分析,不同类型的辅助分析主体游戏的容也不一样。如辅助为上述谈到的辅助类型中的第一类时,其分析过程常是针对游戏的场景中的攻击对象的位置和分布情况进展分析,以实现辅助自动进展攻击以及位置移动。如辅助为辅助

2、类型中的第二类时,其分析过程常是针对游戏效劳器与客户端之间通讯包数据的构造、容以及加密算法的分析。因网络游戏公司一般都不会公布其游戏产品的通讯包数据的构造、容和加密算法的信息,所以对于开发第二类辅助成功的关键在于是否能正确分析游戏包数据的构造、容以及加密算法,虽然可以使用一些工具辅助分析,但是这还是一种坚苦而复杂的工作。后期局部工作主要是根据前期对游戏的分析结果,使用大量的程序开发技术编写辅助程序以实现对游戏的控制或修改。如辅助程序为第一类辅助时,通常会使用到鼠标模拟技术来实现游戏角色的自动位置移动,使用键盘模拟技术来实现游戏角色的自动攻击。如辅助程序为第二类辅助时,通常会使用到挡截Sock和

3、挡截API函数技术,以挡截游戏效劳器传来的网络数据包并将数据包修改后封包后传给游戏效劳器。另外,还有许多辅助使用对游戏客户端程序存数据修改技术以及游戏加速技术。本文主要是针对开发游戏辅助程序后期使用的程序开发技术进展探讨,重点介绍的如下几种在游戏辅助中常使用的程序开发技术: 动作模拟技术:主要包括键盘模拟技术和鼠标模拟技术。 封包技术:主要包括挡截Sock技术和挡截API技术。动作模拟技术 我们在前面介绍过,几乎所有的游戏都有大量繁琐和无聊的攻击动作以增加玩家的功力,还有那些数不完的迷宫,这些好似已经成为了角色游戏的代名词。现在,辅助可以帮助玩家从这些繁琐而无聊的工作中摆脱出来,专注于游戏情节

4、的进展。辅助程序为了实现自动角色位置移动和自动攻击等功能,需要使用到键盘模拟技术和鼠标模拟技术。下面我们将重点介绍这些技术并编写一个简单的实例帮助读者理解动作模拟技术的实现过程。 鼠标模拟技术几乎所有的游戏中都使用了鼠标来改变角色的位置和方向,玩家仅用一个小小的鼠标,就可以使角色畅游天下。那么,我们如何实现在没有玩家的参与下角色也可以自动行走呢。其实实现这个并不难,仅仅几个Windows API函数就可以搞定,让我们先来认识认识这些API函数。(1) 模拟鼠标动作API函数mouse_event,它可以实现模拟鼠标按下和放开等动作。VOID mouse_event(DWORD dwFlags,

5、 / 鼠标动作标识。DWORD dx, / 鼠标水平方向位置。DWORD dy, / 鼠标垂直方向位置。DWORD dwData, / 鼠标轮子转动的数量。DWORD dwExtraInfo / 一个关联鼠标动作辅加信息。);其中,dwFlags表示了各种各样的鼠标动作和点击活动,它的常用取值如下:MOUSEEVENTF_MOVE表示模拟鼠标移动事件。MOUSEEVENTF_LEFTDOWN 表示模拟按下鼠标左键。MOUSEEVENTF_LEFTUP 表示模拟放开鼠标左键。MOUSEEVENTF_RIGHTDOWN 表示模拟按下鼠标右键。MOUSEEVENTF_RIGHTUP 表示模拟放开鼠标

6、右键。MOUSEEVENTF_MIDDLEDOWN 表示模拟按下鼠标中键。MOUSEEVENTF_MIDDLEUP 表示模拟放开鼠标中键。(2)、设置和获取当前鼠标位置的API函数。获取当前鼠标位置使用GetCursorPos()函数,设置当前鼠标位置使用SetCursorPos()函数。BOOL GetCursorPos(LPPOINTlpPoint / 返回鼠标的当前位置。BOOL SetCursorPos(int X, / 鼠标的水平方向位置。int Y /鼠标的垂直方向位置。通常游戏角色的行走都是通过鼠标移动至目的地,然后按一下鼠标的按钮就搞定了。下面我们使用上面介绍的API函数来模拟

7、角色行走过程。CPoint oldPoint,newPoint;GetCursorPos(&oldPoint); /保存当前鼠标位置。newPoint.x = oldPoint.x+40;newPoint.y = oldPoint.y+10;SetCursorPos(newPoint.x,newPoint.y); /设置目的地位置。mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);/模拟按下鼠标右键。mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);/模拟放开鼠标右键。2 键盘模拟技术在很多游戏中,不仅提供了鼠标的操作,而且还

8、提供了键盘的操作,在对攻击对象进展攻击时还可以使用快捷键。为了使这些攻击过程能够自动进展,辅助程序需要使用键盘模拟技术。像鼠标模拟技术一样,Windows API也提供了一系列API函数来完成对键盘动作的模拟。模拟键盘动作API函数keydb_event,它可以模拟对键盘上的某个或某些键进展按下或放开的动作。VOID keybd_event(BYTE bVk, / 虚拟键值。BYTE bScan, / 硬件扫描码。DWORD dwFlags, / 动作标识。DWORD dwExtraInfo / 与键盘动作关联的辅加信息。);其中,bVk表示虚拟键值,其实它是一个BYTE类型值的宏,其取值围为

9、1-254。有关虚拟键值表请在MSDN上使用关键字“Virtual-Key Codes查找相关资料。bScan表示当键盘上某键被按下和放开时,键盘系统硬件产生的扫描码,我们可以MapVirtualKey()函数在虚拟键值与扫描码之间进展转换。dwFlags表示各种样的键盘动作,它有两种取值:KEYEVENTF_EXTENDEDKEY和KEYEVENTF_KEYUP。责任编辑 : 下面我们使用一段代码实现在游戏中按下Shift+R快捷键对攻击对象进展攻击。keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0); /按下CTRL键。keybd

10、_event(0x52,MapVirtualKey(0x52,0),0,0);/键下R键。keybd_event(0x52,MapVirtualKey(0x52,0), KEYEVENTF_KEYUP,0);/放开R键。keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);/放开CTRL键。3 激活辅助上面介绍的鼠标和键盘模拟技术实现了对游戏角色的动作局部的模拟,但要想辅助能工作于游戏之上,还需要将其与游戏的场景窗口联系起来或者使用一个激活键,就象按键精灵的那个激活键一样。我们可以用GetWindow函数来枚

11、举窗口,也可以用Findwindow函数来查找特定的窗口。另外还有个FindWindowEx函数可以找到窗口的子窗口,当游戏切换场景的时候我们可以用FindWindowEx来确定些当前窗口的特征,从而判断是否还在这个场景,方法很多了,比方可以GetWindowInfo来确定一些东,比方当查找不到某个按钮的时候就说明游戏场景已经切换了等等方法。当使用激活键进展关联,需要使用Hook技术开发一个全局键盘钩子,在这里就不具体介绍全局钩子的开发过程了,在后面的实例中我们将会使用到全局钩子,到时将学习到全局钩子的相关知识。4 实例实现通过上面的学习,我们已经根本具备了编写动作式游戏辅助的能力了。下面我们

12、将创立一个画笔程序辅助,它实现自动移动画笔字光标的位置并写下一个红色的“R字。以这个实例为根底,参加相应的游戏动作规那么,就可以实现一个完整的游戏辅助。这里作者不想使用某个游戏作为例子来开发辅助因没有游戏商家的授权啊!,如读者感兴趣的话可以找一个游戏试试,最好仅做测试技术用。首先,我们需要编写一个全局钩子,使用它来激活辅助,激活键为F10。创立全局钩子步骤如下:(1)选择MFC AppWizard(DLL)创立工程ActiveKey,并选择MFC Extension DLL共享MFC拷贝类型。(2).插入新文件ActiveKey.h,在其中输入如下代码:#ifndef _KEYDLL_H#de

13、fine _KEYDLL_Hclass AFX_EXT_CLASS CKeyHook:public CObjectpublic:CKeyHook();CKeyHook();HHOOK Start();/安装钩子BOOL Stop(); /卸载钩子;#endif(3).在ActiveKey.cpp文件中参加声明#include ActiveKey.h。(4).在ActiveKey.cpp文件中参加共享数据段,代码如下:/Shared data section#pragma data_seg(sharedata)HHOOK glhHook=NULL; /钩子句柄。HINSTANCE glhInst

14、ance=NULL; /DLL实例句柄。#pragma data_seg()(5).在ActiveKey.def文件中设置共享数据段属性,代码如下:SETCTIONSshareddata READ WRITE SHARED(6).在ActiveKey.cpp文件中参加CkeyHook类的实现代码和钩子函数代码:/键盘钩子处理函数。extern C LRESULT WINAPI KeyboardProc(int nCode,WPARAM wParam,LPARAMlParam)if( nCode = 0 )if( wParam = 0X79 )/当按下F10键时,激活辅助。/辅助实现代码。CPo

15、int newPoint,oldPoint; GetCursorPos(& newPoint.x = oldPoint.x+40; newPoint.y = oldPoint.y+10; SetCursorPos(newPoint.x,newPoint.y); mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);/模拟按下鼠标左键。mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);/模拟放开鼠标左键。keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); /按下SHIFT键。keyb

16、d_event(0x52,MapVirtualKey(0x52,0),0,0);/按下R键。keybd_event(0x52,MapVirtualKey(0x52,0),KEYEVENTF_KEYUP,0);keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0);/放开SHIFT键。SetCursorPos(oldPoint.x,oldPoint.y);return CallNextHookEx(glhHook,nCode,wParam,lParam);CKeyHook:CKeyHook()CKeyHook()if(

17、glhHook )Stop();/安装全局钩子。HHOOK CKeyHook:Start()glhHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,glhInstance,0);/设置键盘钩子。return glhHook;/卸载全局钩子。BOOL CKeyHook:Stop()BOOL bResult = TRUE;if( glhHook )bResult = UnhookWindowsHookEx(glhHook);/卸载键盘钩子。return bResult;(7).修改DllMain函数,代码如下: int APIENTRYDllMain

18、(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)/如果使用lpReserved参数那么删除下面这行UNREFERENCED_PARAMETER(lpReserved);if (dwReason = DLL_PROCESS_ATTACH)TRACE0(NOtePadHOOK.DLL Initializing!); /扩展DLL仅初始化一次if (!AfxInitExtensionModule(ActiveKeyDLL, hInstance)return 0;new CDynLinkLibrary(ActiveKeyDLL);/把DL

19、L参加动态MFC类库中glhInstance = hInstance;/插入保存DLL实例句柄else if (dwReason = DLL_PROCESS_DETACH)NotePadHOOK.DLL Terminating!/终止这个库前调用它AfxTermExtensionModule(ActiveKeyDLL);return 1;(8).编译工程ActiveKey,生成ActiveKey.DLL和ActiveKey.lib。接着,我们还需要创立一个外壳程序将全局钩子安装了Windows系统中,这个外壳程序编写步骤如下:(1).创立一个对话框模式的应用程序,工程名为Simulate。(2

20、).在主对话框中参加一个按钮,使用ClassWizard为其创立CLICK事件。(3).将ActiveKey工程Debug目录下的ActiveKey.DLL和ActiveKey.lib拷贝到Simulate工程目录下。(4).从“工程菜单中选择“设置,弹出Project Setting对话框,选择Link标签,在“对象/库模块中输入ActiveKey.lib。(5).将ActiveKey工程中的ActiveKey.h头文件参加到Simulate工程中,并在Stdafx.h中参加#include ativeKey.h。(6).在按钮单击事件函数输入如下代码:void CSimulateDlg:O

21、nButton1()/ TODO: Add your control notification handler code hereif( !bSetup )m_hook.Start();/激活全局钩子。elsem_hook.Stop();/撤消全局钩子。bSetup = !bSetup;(7).编译工程,并运行程序,单击按钮激活辅助。(8).启动画笔程序,选择文本工具并将笔的颜色设置为红色,将鼠标放在任意位置后,按F10键,画笔程序自动移动鼠标并写下一个红色的大写R。图一展示了按F10键前的画笔程序的状态,图二展示了按F10键后的画笔程序的状态。封包技术通过对动作模拟技术的介绍,我们对游戏辅助

22、有了一定程度上的认识,也学会了使用动作模拟技术来实现简单的动作模拟型游戏辅助的制作。这种动作模拟型游戏辅助有一定的局限性,它仅仅只能解决使用计算机代替人力完成那么有规律、繁琐而无聊的游戏动作。但是,随着网络游戏的盛行和复杂度的增加,很多游戏要求将客户端动作信息及时反应回效劳器,通过效劳器对这些动作信息进展有效认证后,再向客户端发送下一步游戏动作信息,这样动作模拟技术将失去原有的效应。为了更好地“辅助这些游戏,游戏辅助程序也进展了升级换代,它们将以前针对游戏用户界面层的模拟推进到数据通讯层,通过封包技术在客户端挡截游戏效劳器发送来的游戏控制数据包,分析数据包并修改数据包;同时还需按照游戏数据包构

23、造创立数据,再模拟客户端发送给游戏效劳器,这个过程其实就是一个封包的过程。封包的技术是实现第二类游戏辅助的最核心的技术。封包技术涉及的知识很广泛,实现方法也很多,如挡截WinSock、挡截API函数、挡截消息、VxD驱动程序等。在此我们也不可能在此文中将所有的封包技术都进展详细介绍,应选择两种在游戏辅助程序中最常用的两种方法:挡截WinSock和挡截API函数。1 挡截WinSock众所周知,Winsock是Windows网络编程接口,它工作于Windows应用层,它提供与底层传输协议无关的高层数据传输编程接口。在Windows系统中,使用WinSock接口为应用程序提供基于TCP/IP协议的

24、网络访问效劳,这些效劳是由Wsock32.DLL动态库提供的函数库来完成的。由上说明可知,任何Windows基于TCP/IP的应用程序都必须通过WinSock接口访问网络,当然网络游戏程序也不例外。由此我们可以想象一下,如果我们可以控制WinSock接口的话,那么控制游戏客户端程序与效劳器之间的数据包也将易如反掌。按着这个思路,下面的工作就是如何完成控制WinSock接口了。由上面的介绍可知,WinSock接口其实是由一个动态库提供的一系列函数,由这些函数实现对网络的访问。有了这层的认识,问题就好办多了,我们可以制作一个类似的动态库来代替原WinSock接口库,在其中实现WinSock32.d

25、ll中实现的所有函数,并保证所有函数的参数个数和顺序、返回值类型都应与原库一样。在这个自制作的动态库中,可以对我们感兴趣的函数如发送、接收等函数进展挡截,放入辅助控制代码,最后还继续调用原WinSock库中提供的相应功能函数,这样就可以实现对网络数据包的挡截、修改和发送等封包功能。下面重点介绍创立挡截WinSock辅助程序的根本步骤:(1) 创立DLL工程,选择Win32 Dynamic-Link Library,再选择An empty DLL project。(2) 新建文件wsock32.h,按如下步骤输入代码: 参加相关变量声明:HMODULE hModule=NULL; /模块句柄ch

26、ar buffer1000; /缓冲区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 (_s

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1