【详细过程】
  在魔兽的联机过程中,主机负责转发其他玩家的操作,其他玩家只与主机联系。这样主机就可以干很多事情,所以延迟外挂就只能在主机上使用。
  延迟外挂的初步思路是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.游戏外挂的原理 外挂现在分为好多种,比如模拟键盘的,鼠标的,修改数据包的,还有修改本地内存的,但好像没有修改服 ...

  2. 游戏外挂的原理及制作 (1)

    转载自: http://www.hackbase.com/tech/2009-09-22/56303.html 在几年前我看到别人玩网络游戏用上了外挂,做为程序员的我心里实在是不爽,想搞清楚这到底是怎 ...

  3. 【转载】哈希表的原理,真的很难弄懂么?

    [转载]哈希表的原理,真的很难弄懂么? 刘小爱v 发布时间:05-0909:06科技达人 转载路径: https://baijiahao.baidu.com/s?id=1666172942887109 ...

  4. LYSoft之QQ去广告+本地会员外挂原理

    LYSoft出品之QQ去广告+本地会员原理 (QQ2007,QQ2008和QQ2009适用) QQExt采用自动代码分析,支持QQ2007QQ2008,并支持QQ程序没架构改动下的一切新版 下载 LY ...

  5. 3D知识:3D电影的技术原理及制作流程

    3D知识:3D电影的技术原理及制作流程 3D电影,即立体电影,1952年,世界电影史上第一部真正的3D电影<非洲历险记>诞生.此后,虽然3D电影的技术以及电影制作都在得到蓬勃的发展,但是直 ...

  6. 简述47种Shader Map的渲染原理与制作方法

    在Shader中会使用各种不同图参与渲染,所以简单地总结下各种图的渲染原理.制作方法,最后面几种是程序生成图. 1. Albedo 2. Diffuse(Photographic) <img d ...

  7. 计算机动画类型及创作原理,计算机动画的原理和制作.ppt

    <计算机动画的原理和制作.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机动画的原理和制作.ppt>文档请在天天文库搜索. 1.主讲 赵士滨 ...

  8. Cadence基础知识2(环境搭建、原理图库制作、原理图绘制、快捷键)

    需求说明:Cadence基本知识 内容       :环境搭建.原理图库制作.原理图绘制.快捷键 来自       :时间的诗 1 初始化环境 a 打开OrCAD Capture CIS软件 b 选择 ...

  9. [Unity热更]:根据xlua原理+ILRuntime制作的XIL

    根据xlua原理+ILRuntime制作的XIL可以了解下,集xlua与ILRuntime优点于一身,不多说,请看源码: github地址:https://github.com/wuxiongbin/ ...

最新文章

  1. shell awk实战
  2. JavaScript获取浏览器、元素、屏幕的宽高尺寸
  3. Sql 删除不保留日志
  4. python变量如何声明_如何确定变量是否在Python中声明?
  5. Linux驱动调试中的Debugfs的使用简介 CONFIG_DEBUG_FS 的功能与配置
  6. 【深入Cocos2d-x】探索Cocos2d-x中的内存管理-引用计数和自动释放池
  7. Codeforces Round #620 (Div. 2) F2. Animal Observation (hard version) dp + 线段树
  8. 用一个程序生成另一个程序_还有另一个报告生成器?
  9. 【讨论】不得不重视的问题:信息太多!信息太杂!
  10. codevs3143 二叉树的序遍历
  11. Kruskal算法 最小生成树
  12. Java 操作MySql Blob 字段
  13. 误删电脑配置信息还原
  14. Linux系统下载并安装Redis
  15. 讯飞输入法pad版x86_讯飞输入法Pad版下载
  16. 计算机一级IF函数应用,计算机一级if函数怎么用
  17. Python TODO说明
  18. 抓阄 计算机代表什么东西,周岁抓阄准备哪些东西
  19. 交互媒体专题设计------《The Wiley Handbook of Human Computer Interaction》
  20. c语言:模拟用户密码登录

热门文章

  1. Windows dos命令使用总结(持续更新)
  2. 今天学习 H5 感想
  3. 51单片机密码锁设计
  4. TouchScript中文---Pointer Input
  5. mysql string 转int mybatis
  6. 什么是TTL电平、CMOS电平?两者的区别
  7. 洛谷P2396 yyy loves Maths VII【状压dp】
  8. formidable中间件的使用
  9. win 7开机密码破解。
  10. H5中section和article和div的区别