网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
协议型网络游戏外挂制作之启动
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
密==〉数据回传==〉客户端接收数据==〉客户端解密数据==〉客户端数据处理

 

  我们的目标就是数据包,即拦截游戏通讯间的数据来进行相应的修改或者进行发送伪数据包。我大概定了一个计划,不过这一节肯定不能全部讲完,我只能在下班之后写上一点,时间有限,能写多少就写多少吧。

 

  目标程序:大话西游II客户端。(你手上有服务器端吗?有的话我也想要)

  目标:数据包

  目的:数据包拦截,修改,伪发送

  编程软件:这个无所谓吧,不过我这里用的是C Builder 6,前段时间做CB 6相关的项目,而且CB 对于程序界面的编写是最方便不过的了,就是编译的有点慢和生成的程序有点大。(旁白:又不是做手机项目,担心容量吗?)我做受限程序做惯了,养成了不良习惯,没办法了。

 

  思路:我们的程序要干扰别的程序的运行,最好的办法是使用debug的办法,不过,我并没有打算使用debug的办法,我对程序的debug并不太熟悉,而且讨厌编写没用的代码。我准备采用线程注入的办法,至于线程注入,和为什么要线程注入才能干预,这方面的知识最好自己看看《Windows 核心编程》里面讲的,否则这个教程要没完没了了。当我们的线程注入到目标程序之后就方便多了,就可以为所欲为了。因此我们的第一目的是将线程注入到目标程序中。

 

  预备活动:

 

  线程注入最简单的莫过于hook了,如果连这都不知道的话,最好赶快到网上查查或者翻翻《Windows核心编程》。为了防止游戏内部存在反hook的存在和外挂的检测,我将用自己的程序来启动目标程序。由于网游的不定期更新,因此在启动程序的时候最好将升级跳过去,至少在大话这样的程序中我是这样做的,因为频繁升级和版本检测总让我等的时间太长。

 

  下面来进行具体的做法,我尽可能的弄出详细的步骤,如果你用的是VC或者其它的话,只要注意核心的代码就可以了。

 

  新建一个工程,在窗体上添加两个按钮(TButton或者其它类型的按钮),一个将标题改为启动游戏,另一个标题改为启动外挂。再添加一个TOpenDialog。对于默认的窗体那么大的界面有点浪费,因此将窗体弄得小点,别大大的怪吓人的。

 

  双点启动游戏的按钮就可以进行编写该按钮的事件了,默认的是OnClick事件。下面就是事件的代码:

 

if(FileExists(ExtractFileDir(Application->ExeName) "\path.ini")==FALSE)

 

{ /*我将目标程序的路径保存到了当前程序目录中的path.ini文件中,但如果当前程序第一次运行的话,是不存在这个文件的,所以就可以用TOpdnDialog来打开了,做这点只是为了方便,不用每次都得点目标程序*/

if(OpenFile->Execute())

{

 AnsiString AppPath="path=" ExtractFilePath(OpenFile->FileName);

 WritePrivateProfileSection("XY2PATH",AppPath.c_str(),(ExtractFileDir(Application->ExeName)

"\path.ini").c_str());//将目标程序的路径存到path.ini文件中。

}

else

{

 return;

}

}

 

//下面的代码开始启动目标程序

PROCESS_INFORMATION pi;

STARTUPINFO si;

si.cb=sizeof(si);

si.lpReserved=NULL;

si.lpDesktop=NULL;

si.lpTitle=NULL;

si.cbReserved2=0;

si.lpReserved2=NULL;

si.dwFlags=STARTF_USEPOSITION;

si.dwX=0;

si.dwY=0;

char Appname[300];

 

GetPrivateProfileString("XY2PATH","path","",Appname,250,(ExtractFileDir(Application->ExeName)

"\path.ini").c_str());

 

strcat(Appname,"\xy2.exe");

/*以上都在构建目标程序的环境设置,下面调用CreateProcess来启动目标程序

注意将倒数第3个参数要填为目标程序的路径,

第6个参数为CREATE_SUS

  • 上一篇资讯: 外挂编写完全攻略
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号