|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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#相比。 |
|