【转载】魔兽争霸3的延迟外挂原理和制作
【详细过程】
在魔兽的联机过程中,主机负责转发其他玩家的操作,其他玩家只与主机联系。这样主机就可以干很多事情,所以延迟外挂就只能在主机上使用。
延迟外挂的初步思路是HOOK主机魔兽的网络通信函数,然后再sleep一定的MS数,来达到人为制造延迟的目的。
HOOK操作可以用微软研究院的Detours开发包方便地实现。
经过试验,发现魔兽使用send来发送,WSARecv来接受。
DLL的核心代码如下:
//申明要HOOK的函数 int (WINAPI *pSend)(SOCKET s, const char* buf, int len, int flags) = send; int WINAPI MySend(SOCKET s, const char* buf, int len, int flags); int (WINAPI *pWSARecv)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) = WSARecv; int WINAPI MyWSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); int WINAPI MySend(SOCKET s, const char* buf, int len, int flags) { return pSend(s, buf, len, flags); } int WINAPI MyWSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) { Sleep(1000); //在send中也可以sleep,不过那样就会导致大家魔兽一起卡 return pWSARecv( s, lpBuffers, dwBufferCount, lpNumberOfBytesRecvd, lpFlags, lpOverlapped, lpCompletionRoutine); }
然后在DllMain中进行初始化:
DisableThreadLibraryCalls(hModule); DetourTransactionBegin(); //detours初始化 DetourUpdateThread(GetCurrentThread()); //更新detours线程 DetourAttach(&(PVOID&)pSend, MySend); //要Hook的函数 if(DetourTransactionCommit()!=NO_ERROR) //生效的操作 MessageBox(NULL,(LPCWSTR)L"failed",(LPCWSTR)L"blocked",MB_OK); DetourTransactionBegin(); //detours初始化 DetourUpdateThread(GetCurrentThread()); //更新detours线程 DetourAttach(&(PVOID&)pWSARecv, MyWSARecv); //要Hook的函数 if(DetourTransactionCommit()!=NO_ERROR) //生效的操作 MessageBox(NULL,(LPCWSTR)L"failed",(LPCWSTR)L"blocked",MB_OK);
写完DLL就可以将它注入war3进程,注入完后别人就开始延迟了。
【转载】魔兽争霸3的延迟外挂原理和制作相关推荐
- [转载]游戏外挂原理
最近同学在折腾外挂 我也就把这篇发上来吧 以前的文章了 也不知道那里来的了..... 1.游戏外挂的原理 外挂现在分为好多种,比如模拟键盘的,鼠标的,修改数据包的,还有修改本地内存的,但好像没有修改服 ...
- 游戏外挂的原理及制作 (1)
转载自: http://www.hackbase.com/tech/2009-09-22/56303.html 在几年前我看到别人玩网络游戏用上了外挂,做为程序员的我心里实在是不爽,想搞清楚这到底是怎 ...
- 【转载】哈希表的原理,真的很难弄懂么?
[转载]哈希表的原理,真的很难弄懂么? 刘小爱v 发布时间:05-0909:06科技达人 转载路径: https://baijiahao.baidu.com/s?id=1666172942887109 ...
- LYSoft之QQ去广告+本地会员外挂原理
LYSoft出品之QQ去广告+本地会员原理 (QQ2007,QQ2008和QQ2009适用) QQExt采用自动代码分析,支持QQ2007QQ2008,并支持QQ程序没架构改动下的一切新版 下载 LY ...
- 3D知识:3D电影的技术原理及制作流程
3D知识:3D电影的技术原理及制作流程 3D电影,即立体电影,1952年,世界电影史上第一部真正的3D电影<非洲历险记>诞生.此后,虽然3D电影的技术以及电影制作都在得到蓬勃的发展,但是直 ...
- 简述47种Shader Map的渲染原理与制作方法
在Shader中会使用各种不同图参与渲染,所以简单地总结下各种图的渲染原理.制作方法,最后面几种是程序生成图. 1. Albedo 2. Diffuse(Photographic) <img d ...
- 计算机动画类型及创作原理,计算机动画的原理和制作.ppt
<计算机动画的原理和制作.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机动画的原理和制作.ppt>文档请在天天文库搜索. 1.主讲 赵士滨 ...
- Cadence基础知识2(环境搭建、原理图库制作、原理图绘制、快捷键)
需求说明:Cadence基本知识 内容 :环境搭建.原理图库制作.原理图绘制.快捷键 来自 :时间的诗 1 初始化环境 a 打开OrCAD Capture CIS软件 b 选择 ...
- [Unity热更]:根据xlua原理+ILRuntime制作的XIL
根据xlua原理+ILRuntime制作的XIL可以了解下,集xlua与ILRuntime优点于一身,不多说,请看源码: github地址:https://github.com/wuxiongbin/ ...
最新文章
- shell awk实战
- JavaScript获取浏览器、元素、屏幕的宽高尺寸
- Sql 删除不保留日志
- python变量如何声明_如何确定变量是否在Python中声明?
- Linux驱动调试中的Debugfs的使用简介 CONFIG_DEBUG_FS 的功能与配置
- 【深入Cocos2d-x】探索Cocos2d-x中的内存管理-引用计数和自动释放池
- Codeforces Round #620 (Div. 2) F2. Animal Observation (hard version) dp + 线段树
- 用一个程序生成另一个程序_还有另一个报告生成器?
- 【讨论】不得不重视的问题:信息太多!信息太杂!
- codevs3143 二叉树的序遍历
- Kruskal算法 最小生成树
- Java 操作MySql Blob 字段
- 误删电脑配置信息还原
- Linux系统下载并安装Redis
- 讯飞输入法pad版x86_讯飞输入法Pad版下载
- 计算机一级IF函数应用,计算机一级if函数怎么用
- Python TODO说明
- 抓阄 计算机代表什么东西,周岁抓阄准备哪些东西
- 交互媒体专题设计------《The Wiley Handbook of Human Computer Interaction》
- c语言:模拟用户密码登录