如何制作魔兽T人挂
&&&&& 对于玩DOTA的计算机专业学生来说,可能很多人都有兴趣去开发一款属于自己的T人挂。但是否着手的时候会感觉无从下手呢?其实T人挂很简单,真的不难,只要有耐心,就一定能实现。&&&& 所谓挂,其实就是游戏程序的一个恶意补丁而已,那么要开发魔兽T人挂,需要准备哪些基础知识呢?我想需要下面的技术来支持:&&& 1. Socket API Hook技术,既然是T人挂,那么肯定会涉及到游戏联网的方面,那么Hook魔兽的Socket API十分必要。&&&&2. windows内存映射技术,为什么要了解这方面的知识呢?很显然,游戏是以独立的进程运行于操作系统之上的,那么我们要把自己的T人挂去干涉魔兽进程的运行,它没有那么听话,不会束手就擒,所以我们要突破进程的防线,将T人挂代码注入到游戏进程中去。&&&& T人挂的工作原理是什么?当我们在游戏中如果想T掉某个玩家的话,我们只需对他私聊,并输入相应的指令即可。显而易见,T人挂完成这样的动作是因为在聊天的时候会触发游戏调用通信函数Send(),那么我们只需要将Send函数Hook下来,就可以拦截并获取Send函数传进来的参数,在Send的参数中有个pBuf的参数,这个包含了游戏的聊天内容,那么我们检索这个buffer中的内容,如果包含了我们输入的特殊指令,那么说明通信发起方想要T掉通信的另一方,怎么来完成呢?很简单,我们只需要调用closesocket()这个函数即可。因为套接字关闭了,通信也就结束,另一方必定掉线。卡人的道理是什么呢?如果主机想要卡掉一个玩家,也很简单,只需要伪造一个延时功能,延时相应的时间就可以将那位玩家卡掉。&&& 那么怎么去实现拦截呢?首先,我们要知道Send函数的起始地址,并用一个指针来保存这个地址,同时我们定义一个自己的Send函数,这个自定义的Send函数就是让我们来干坏事的,为了要让进程调用Send函数的时候自动跳转到我们的自定义Send函数中来呢?我们需要将跳转地址写入到Send函数地址中去,跳转地址=自定义Send地址-原Send函数地址-5,然后加入跳转的机器码指令,WindowsNT的跳转指令是0XE9,这样当游戏进程要调用Send函数的时候就会调转到我们的自定义函数中。但是当我们完成了T人工作后我们需要释放跳转地址,将Send函数恢复,否则会导致一些未知错误。&&& 接下来要做的工作就是将T人挂编译成dll然后注入到游戏进程中去。&&& 很多人都在讨论关于非主机T人,这样显得很不现实,因为魔兽的联网机制是非主机都要和主机相连,非主机的游戏数据时通过主机来实现交互的,所以这就只能主机才可以完成T人工作。以下是我Hook记录下来的关于魔兽局域网中触发的Socket函数,从这些调用顺序可以知道该拦截哪些Socket函数来实现T人操作。
分享这篇日志的人也喜欢
迟到小公举
马上七夕了??
被遗忘的人!
热门日志推荐
人人最热标签
北京千橡网景科技发展有限公司:
文网文[号??京公网安备号?甲测资字
文化部监督电子邮箱:wlwh@??
文明办网文明上网举报***: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场