仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 938|回复: 7
打印 上一主题 下一主题

[学习教程] 来一篇关于NET的C#复杂游戏外挂制造(以Warcraft Ⅲ为例)

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-16 14:28:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
是不是实质都是API?有的好像不只是API那么简单的,有的也是一种框架就像MFC一样。有的还是一种思想(就是做软件的思想)(好像很深奥,其实我也不懂^_^)<p>网上有良多游戏外挂制造的教程,年夜多是讲针对年夜型收集游戏的,次要包括一些抓包、反汇编、C++的常识综合。现实也云云,罕见的外挂都是利用VC++写的,历来没有过C#大概其他.NET言语编写的外挂。
作为微软.NET手艺的忠厚粉丝,这不免是一种遗憾。不外没关系,上面流牛木马就教人人两招,包教包会,免收膏火。
实在作为游戏外挂来讲,次要就是三个功效:摹拟键盘操纵、摹拟鼠标操纵、修正内存数据。修正内存数据对照难,但摹拟鼠标键盘的操纵却很复杂。良多盛行游戏的外挂,都能够只经由过程摹拟鼠标键盘来完成,比方:劲舞团、QQ音速、连连看、各种网页游戏,和各种年夜型网游中的主动打怪、主动吃药等等。
WarcraftⅢ,学名魔兽争霸之冰封王座,俗称魔兽,简称war3,在比来六七年风行环球。比来两年,war3在中国又掀起了玩DOTA的新低潮。
本文制造DOTA游戏中的显血、改键外挂为例,复杂地先容怎样利用C#言语制造游戏外挂。
终极界面以下:



本示例包括两个功效:显血;将Q键改成小键盘的7键。玩war3的同砚都晓得,这两个功效关于war3(特别是DOTA)相称主要。
起首复杂先容一下,外挂程序摹拟键盘的道理。
外挂程序与游戏程序是两个分歧的历程。外挂程序利用Windows供应的API找到游戏程序的历程,并设置键盘钩子(甚么叫做钩子?你不晓得,但百度晓得。)设置完钩子后,我们再监控游戏历程顶用户的按键,并依据用户需求举行处置,完成某些摹拟键盘举措。
懂得了这个历程以后,我们就能够入手下手收拾思绪了。完成外挂一共必要以下四个步骤:
1、声明WindowsAPI中的函数和常量
<olclass="dp-c">//键盘Hook布局函数[StructLayout(LayoutKind.Sequential)]publicclassKeyBoardHookStruct{publicintvkCode;publicintscanCode;publicintflags;publicinttime;publicintdwExtraInfo;}#regionDllImport//设置钩子[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]publicstaticexternintSetWindowsHookEx(intidHook,HookProclpfn,IntPtrhInstance,intthreadId);[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]//抽失落钩子publicstaticexternboolUnhookWindowsHookEx(intidHook);[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]//挪用下一个钩子publicstaticexternintCallNextHookEx(intidHook,intnCode,IntPtrwParam,IntPtrlParam);//获得模块句柄[DllImport("kernel32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]privatestaticexternIntPtrGetModuleHandle(stringlpModuleName);//寻觅方针历程窗口[DllImport("USER32.DLL")]publicstaticexternIntPtrFindWindow(stringlpClassName,stringlpWindowName);//设置历程窗口到最前[DllImport("USER32.DLL")]publicstaticexternboolSetForegroundWindow(IntPtrhWnd);//摹拟键盘事务[DllImport("User32.dll")]publicstaticexternvoidkeybd_event(BytebVk,BytebScan,Int32dwFlags,Int32dwExtraInfo);//开释按键的常量privateconstintKEYEVENTF_KEYUP=2;
本例所利用的函数对照少,它们都在体系的USER32.dll里,包含:设置和作废钩子、挪用下一个钩子、导进历程、摹拟键盘等等。我们顺次导进它们。这些函数的定名标准公道,几近只依据函数名就可以晓得其功效。假如读者关于个中的某些函数不熟习,请自行搜刮MSDN。
2、利用WindowsAPI设置钩子
有了以上windowsAPI函数的声明,下一步就是设置钩子了。
寥寥两行代码,但包括了相称丰厚的内容。
<divclass="code"><olclass="dp-c">//托付publicdelegateintHookProc(intnCode,IntPtrwParam,IntPt就安全性而言,Java已经远远低于VB.NET,更无法与安全性著称的C#相比。
分手快乐 该用户已被删除
7#
发表于 2015-3-23 07:52:52 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
谁可相欹 该用户已被删除
6#
发表于 2015-3-16 23:27:42 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
小妖女 该用户已被删除
5#
发表于 2015-3-9 12:16:31 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
小女巫 该用户已被删除
地板
发表于 2015-2-9 18:46:42 | 只看该作者
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
山那边是海 该用户已被删除
板凳
发表于 2015-2-4 07:16:19 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
小魔女 该用户已被删除
沙发
发表于 2015-1-25 21:36:05 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
海妖 该用户已被删除
楼主
发表于 2015-1-18 14:43:52 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-12 16:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表