您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 【新手教程】用C语言制作单机游戏外挂附图文教程
【新手教程】用C语言制作单机游戏外挂附:图文教程启动VC++6.0,创建一个项目,就和你上机时候一样,然后开始输入代码头文件当然先输入,那个stdio.h我们就不多说了,谁都懂的,现在我们要输入第二个书上没有的#includewindows.h这个windows.h非常重要,如果缺少,后面很多函数将无法调用好了,接下来自然是main函数,这个也不解释大家都懂,然后我们外挂当然要说明prinf这个函数也是书上的常用的知识,说明就这样输到屏幕上这里嘛,就拿我前天在贴吧上推荐的游戏双星物语2开刀,原因是我打了半天打不过把我惹毛了那么,我的说明是这样的,代码如下首先我们先把退出功能给做了,我们用一个while(1)循环让程序持续运行,因此只要一个break;跳出循环就能让程序退出了这里我们将大小写E都考虑到,为的是让操作更加人性化,好了,如果输入的字母不是E,就执行else然后我们继续判断输入的字母是什么,我们现在先做打开外挂这部分,看上图,其中O是打开外挂的命令,写到这里我们要回到顶部定义两个变量,看我红圈,一个是HWND(句柄),一个是DWORD(双字),你可以把两个都理解为我们熟悉的int,他们都是数字,只不过叫法不同我觉得我有必要解释下句柄(HWND)和PID是什么,我们可以把它们理解成我们现实中的学生证和身份证,两个东西都可以证明你的身份,功能都是一样的,只不过叫法不同,而且你的身份证和学生证是唯一的,也就是说没有人的身份证学生证和你的一模一样,计算机里的程序也是这样,每一个程序都会有他的身份证明,而且也是唯一的,为什么要这两样东西呢,想想,我们要修改的是双星物语2这个游戏,而不是暗黑破坏神3这玩意,当然要用这两个东西确认我们要修改的程序好了,我们继续,看代码我们知道,修改游戏的代码应该写在这里代码怎么写呢,不急,我们先把游戏打开好了,打开游戏。憋一眼,看到这款游戏的窗体上写着“双星物语2”,我们待会就要用这个名字来取得这个游戏程序的句柄和PID(processID)现在我们在刚刚说的地方写入代码,第一个函数FindWindow就是靠名字来取得这个游戏程序的句柄,第二个GetWindowThreadProcessId是靠句柄取得PID,为什么要靠句柄取得PID呢,因为我们修改的游戏需要PID而不是句柄,就像你要去开房,学生证没用,要身份证才行打开大门后可以干事了,我们现在先做修改金钱的部分,如上代码,应该不难理解现在我们要用到一个软件,名字叫CE,假如你没有,你可以去这里下载或者百度cheatengine,我的是5.6.1版本我建议不会用的可以先学习下教程,这里我简单做下教程(很容易的),看图点开后,选择游戏进程,什么?不知道什么叫游戏进程,那把任务管理器打开,然后选到游戏的那个点右键再点跳转到进程,再在上面找到和它一样的就行了,然后点open然后我们切回游戏画面,把现在的钱的数目记下回到ce,填写刚刚数字,然后点firstscan,然后出现以下回到游戏,再弄点钱,然后再回ce,填写新的钱数,再点nextscan之后左边就剩下一个了那好笔把地址抄下吧,这个就是金钱的地址,打个比方就是抢银行时银行金库的位置,回到VC继续编程,可以看到我们又定义了三个变量DWORD,一个呢就是钱的数目,一个呢记录地址,还有一个记录执行结果,就是有没有干成功,有的话不等于0,没的话等于0额,这里还要加个getchar()之前忘记了,用来抵消回车的可以运行下看看了看,钱成功到手了之后我们修改下血量,其实换汤不换药,先切回游戏看血量回ce填写然后让怪K两下让血变化回去继续查找找到地址了其实只要把之前那个改钱的代码复制一遍,判断换成H,然后修改下面的几个地方再看看成功了最后,贴上完整代码,如果你实在不懂就复制粘贴把,只要改几个地方,别的游戏通用(当然不是全部都可以,单机游戏绝大部分没问题,网络游戏仅部分没问题)#includestdio.h#includewindows.hvoidmain(void){charCommand;HWNDhWnd;DWORDPid;HANDLEhProcess=0;while(1){printf(———————————双星物语2游戏外挂——————————\n);printf(打开外挂O修改金钱M\n);printf(修改血量H退出外挂E\n);printf(———————————------------------——————————\n);Command=getchar();getchar();if(Command=='E'||Command=='e'){break;}else{if(Command=='O'||Command=='o'){hWnd=FindWindow(NULL,双星物语2);if(hWnd!=0){GetWindowThreadProcessId(hWnd,&Pid);hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);if(hProcess==0){printf(\n打开游戏进程失败\n);}else{printf(\n成功打开游戏进程\n);}}}if(Command=='M'||Command=='m'){if(hProcess==0){printf(\n请先打开外挂\n);}else{DWORDMoney;DWORDAddr=0x005b85b0;printf(\n您想多少钱?:);scanf(%ld,&Money);DWORDres=WriteProcessMemory(hProcess,(LPVOID)Addr,&Money,4,0);if(res==0){printf(\n修改失败\n);}else{printf(\n修改成功\n);}}}if(Command=='H'||Command=='h'){if(hProcess==0){printf(\n请先打开外挂\n);}else{DWORDHP;DWORDAddr=0x005b85cc;printf(\n您想多少血?:);scanf(%ld,&HP);DWORDres=WriteProcessMemory(hProcess,(LPVOID)Addr,&HP,4,0);if(res==0){printf(\n修改失败\n);}else{printf(\n修改成功\n);}}}}}return;}
本文标题:【新手教程】用C语言制作单机游戏外挂附图文教程
链接地址:https://www.777doc.com/doc-2809584 .html