去年做了一些研究,研究做外挂的一些相关技术,打算放出来跟大家分享,分享一下我们做挂的一些思路,挂的原理,希望抛砖引玉。

外挂说白了就是用程序代替人去操纵游戏,模拟人向游戏程序发送键盘、鼠标消息。一般的流程就是:

1、 通过Windows系统的OpenProcess API打开目标进程 – 也就是游戏,以便能读写目标内存的数据,甚至是调用目标进程的函数,比如某些世界级的游戏里的Lua函数,或者游戏本身的C/C++函数。

2、 通过ReadVirtualMemory和WriteVirtualMemory来 读取和修改一些关键信息,比如说人物的生命值,人物的坐标,游戏里地图上各个元素等等。

3、 接着

a)         要么就是调用游戏里的一些函数,绕过游戏客户端的一些约束,调用角色里的一些非常强大的功能,从而快速杀怪。但这种方法的缺点很明显,服务器会做很多的检查判定你是挂从而封杀你。

b)         要么就是直接向游戏进程发送键盘、鼠标等消息,通过判定地图上的障碍物、怪物之类的东西过地图,当然杀怪也是通过模拟按键来完成。

然而随着外挂对游戏的破坏性影响,反外挂和外挂的反反外挂技术都已经在内核层缠斗了,比如:

1、 为了防止外挂调用Windows系统的一系列关键API(例如OpenProcess、Read/WriteVirtualMemory等),网游程序一般都会在游戏启动时在Windows操作系统上加载一个驱动程序,这个驱动程序的目的就是修改一系列关键API的代码,有时也会将游戏进程在系统中隐藏掉,从而使用户态的外挂和调试器无法访问游戏进程。

2、 为了防止外挂制作者通过内核调试技术来分析游戏对系统关键API的代码修改,反外挂驱动启动后一般都会禁用内核调试(反调试技术、反调试技术二)。

3、 另外游戏程序也会屏蔽Windows系统用来向游戏进程发送键盘、鼠标等消息的函数。

4、 为了防止游戏里的关键数据被轻易修改,一般生命值这些东西游戏程序都会将其加密,使用一个加密函数去读写。

5、 另外为了防止外挂杀怪太强从而影响游戏的平衡,一般来说从游戏服务器端,一张地图里的怪物坐标、类型等数据,是一点点传到客户端的。

6、 还有很多……(我自己经验也不够,一时半会也枚举不完)。

那么做外挂的第一步,就是破解这个反外挂驱动,否则不仅没办法操控游戏进程,也没有办法使用调试器逆向分析游戏里的一些关键数据,于是通常的做法是:

1、 首先破解反外挂驱动的禁用内核调试的手段,一般都是通过Windbg和虚拟机用内核调试技术来完成的。

2、 然后找出反外挂驱动对系统API的更改。

3、 然后再写一个驱动程序,绕过反外挂驱动对系统API的更改。

但上面的方法有点累,因为破解禁用内核调试的手段就需要进行一些逆向了,而且还要对反外挂驱动逆向,比较麻烦。但是它并没有禁用本地内核调试功能和内存文件生成的功能,因此我们可以使用这种方式调试和开发驱动,简便程度比双机内核调试差一点点。

1、 使用本地内核调试:

windbg -kl

2、 生成内存(dump)文件:

修改\HKLM\SYSTEM\CurrentControlSet\Control\CrashControl里的:

AutoReboot

CrashDumpEnabled

1 – 代表完全保存物理内存内容

2 – ?

3 – minidump

如果修改为1,BSOD(蓝屏)之后,完全内存保存在%windir%\memory.dmp

如果修改为3,BSOD(蓝屏)之后,minidump保存在%windir%\minidump\文件夹下面。

还有一个比较简单的方法,就是你在自己的破解驱动里,故意往SSDT写一些垃圾数据,然后导致系统BSOD(蓝屏),重启机器后用windbg打开dump打开memory.dmp文件,执行!analyze –v命令会自动给你显示所有被hook的函数和hook的地址、代码等等信息,这样可以直接做完第1和第2步。

最后剩下的编码就比较简单了,具体的代码请参看以前的博客:破解XXX游戏驱动保护过程总结、另外有个朋友的破解过程写的很详细,也建议大家看看:过 DNF TP驱动保护(一)。

最后如果大家对调试技术感兴趣的话,可以考虑购买我的新书: 应用程序调试技术,这套视频除了讲解调试的技巧外,还尽量完整地讲解了周边用到的技术,这是因为调试技术要好的话,需要基础功和背景知识扎实才行。

谢谢大家,未完待续……

给网游写一个挂吧(一) – 反反外挂驱动的驱动相关推荐

  1. 给网游写一个挂吧(四) – 调用游戏函数

    前面的文章给网游写一个挂吧 – 启动外挂上或给网游写一个挂吧 – 启动外挂下将外挂启动后,那就可以进行读写游戏内存和调用游戏的一些操作了. 读写内存很简单,如果是内挂的话,因为是运行在进程内,甚至都可 ...

  2. 给网游写一个挂吧(三) – 启动外挂下

    前面的文章给网游写一个挂吧 – 启动外挂上介绍了输入法注入的方法,本文解释第二种方法. 有的游戏限制比较多,可能会将输入法注入也禁用掉--这个时候就需要另想方法了.其实我们的目的很简单,就是要让不知道 ...

  3. 给网游写一个挂吧(二) – 启动外挂上

    前面的文章给网游写一个挂吧– 反反外挂驱动的驱动,我们已经可以访问游戏的内存之后,接下来需要: 1.         找到游戏里关键元素的偏移量,比如生命值的内存的位置.一般来说,大部分大型3D游戏都 ...

  4. 从零写一个编译器(六):语法分析之表驱动语法分析

    项目的完整代码在 C2j-Compiler 前言 上一篇已经正式的完成了有限状态自动机的构建和足够判断reduce的信息,接下来的任务就是根据这个有限状态自动机来完成语法分析表和根据这个表来实现语法分 ...

  5. 网游外挂业越发成熟:上班族玩家习惯用外挂

    研发商应对手段成熟 运营商实施严密监测 政府部门加大打击力度 网游行业刚刚起步之初,游戏外挂就已经随之产生.当时,面对"外挂"网游公司甚至不知所措,受到的影响也非同小可.而现在&q ...

  6. 盘点网游:2005遭遇尴尬事

    转自:DoNews http://www.donews.com/Content/200512/187a4c45-093d-4832-84f4-763e1c30aedc.shtm 虽然2005年中,网络 ...

  7. wegame饥荒一直连接中_谁是老牛?谁是嫩草?WeGame与老牌网游的故事 | 游戏茶馆...

    每当WeGame上的大型网游名单上又多出一位"新来"的客人时,WeGame都会收到一些质疑的声音. "好的单机没引进多少,国内快凉的老网游倒是一个接一个的迎上来" ...

  8. 问剑java_中秋国庆佳节 十大Java手机网游推荐

    有人说Java机时代正逐渐落幕,机能已经跟不上网游的发展步伐,笔者却并不这样认为,所以借中秋国庆双节之际,向大家推荐十款特色鲜明.人气前茅的Java网游,旨在表明Java网游被边缘化的说法还为时过早! ...

  9. 唐骏:网游没有太多技术含量

    盛大公司总裁唐骏今日在创新论坛上表示,网游的技术含量并不高,但是运营商在商业模式上进行了创新,导致的结果是网游的利润高于软件业的平均增长速度. "网游是一个软件产业.为什么在过去五年当中,其 ...

最新文章

  1. curl 忽略证书访问 https
  2. IT职场人生系列之二十一:如何学习新语言(一)
  3. Redis查漏补缺:最易错过的技术要点大扫盲
  4. Qt工程文件Pro中判断Qt版本号
  5. simple2.py
  6. Java 中的几种线程池,你之前用对了吗,互联网 面试官 如何面试
  7. Part1: Specification of Required Functions
  8. WebStorm设置字体和颜色
  9. F.Studio 远程备份系统
  10. dspscififo历程_DSP2812 SCI FIFO模式调试心得
  11. GIS坐标系:epsg 3857 vs 4326
  12. PHP虚拟素材资源站源码带支付,素材火源码二开版带码支付源码可以做虚拟资源或源码下载网...
  13. 全景图拍摄设备有哪些?全景图拍摄方法
  14. 计算机 蚂蚁搬家 教案,大班科学活动教案:小蚂蚁搬家教案(附教学反思)
  15. Android显示横幅样式通知
  16. (基础篇1-15)项目架构简介及环境搭建
  17. 使用计算机的安全事项,电脑安全使用注意事项
  18. 程序员日常照片大合集!快来大饱眼福!
  19. 微信小程序怎么实现防止截屏
  20. Android 基础入门教程--笔记

热门文章

  1. mysql可以存文档_MySQL 文档存储介绍
  2. 奈飞将拍剧版《三体》国产科幻片差在哪?
  3. 测试用例编写的准备、原则和覆盖范围
  4. SCU-4438 Censor(字符串哈希||KMP)
  5. 大疆无人机支持移动开发二次开发的设备支持
  6. 2019年CSDN最新排名(附前十排名)
  7. 计算机组成原理实验报告范文,计组实验报告
  8. 双边滤波器、高斯滤波
  9. SKIL/工作流程/实验中的TensorFlow
  10. Object.assign()是深拷贝还是浅拷贝?