守望先锋外挂(OWG)透视原理分析
守望先锋作为目前最为火爆的游戏,赢得了广大玩家的青睐。同时也迎来了外挂的泛滥,而这类外挂最受欢迎的功能非透视莫属了,那么方框透视功能是怎么实现的呢,本文针对比较流行的外挂OWG随大家一起进行揭秘。
本文重点分析了OWG的透视功能的实现过程,外挂通过跨进程读取游戏内玩家的坐标信息,进行转换,创建透明窗口覆盖主用户的整个电脑桌面,在该透明窗口上进行绘制。下面我们就从如何定位外挂透视功能关键代码逻辑入手逐一进行剖析其实现过程。
外挂透视功能实现定位:
选中开启方框ESP。对于这种选中框开功能的方式,最快速的办法就是:
CE内存搜索标记位,然后记录访问此地址的代码。
结合IDA的交叉引用,定位到关键代码逻辑。
其逻辑大概分为读取数据,计算,画框三大部分。
其原理是,通过读取游戏坐标数据,进行转换,使用D2D进行绘制,关于D2D的绘制部分
不做分析。本文主要对其数据读取与坐标转换做了分析,其次对游戏更新后,成功尝试了一次外挂的更新。有失误之处望指正。
外挂读取玩家坐标信息过程分析
外挂读取数据都是基于上述的几个全局地址,依次层层递归的取内容(最长的地址偏移有11个),读取过程如下图(由于读取过程太长,这里只给出了部分截图,详细注释查看附件IDB)。
外挂的坐标转换逻辑
外挂读取了游戏中玩家的3D坐标等数据后,需要将其转换成2D的平面坐标,然后再进行绘制,以下就是对其坐标转换进行了分析:
数据计算部分:从0x140002c22开始到0x140002ecf,其中的调用Call 0x1400023c0为关键计算部分。
绘制部分:在0x140002ff1到140003026。
分析过程中碰到的其它问题
在分析外挂的时候碰到游戏更新了怎么办,相信这是很多小伙伴们的困扰。在分析OWG的时候也遇到了游戏更新。我们可以尝试自己去更新外挂用的的一些地址与偏移,碰到一些像全局地址,但有无法定位的可以用旧版的相对偏移去尝试,坐等更新就不知道猴年马月去了。在游戏的7月14号更新后,我尝试更新出了一个可运行版本。以下就是经验之谈。
通过静态分析,结合IDA交叉引用,在IDA中我们可以看到外挂定义了这么一大堆数据,在后续分析中确定了这部分数据是读取游戏数据的使用到的偏移定义:
地址所在模块的加载地址+偏移的方式,能在跨进程读取中保证每次程序重启后,都能正确读取到想要的数据,甚至在确认了读取的全局变量后,在游戏的小规模更新下我们只需要更新少部分的基址与偏移后,就能再次运行起来。于是对游戏内存进行dump,然而游戏内存是这样的:
直接工具修改页面属性,然后进行dump。
Xuetr挂起游戏线程,x64dbg附加批量修改内存块属性进行dump,
IDA打开dump文件后是这样的:
手动去转换太慢,来段脚本:
强制进行代码转化后确认:
这2段数据中前3个为游戏的全局地址,最后一个0x1cbd628为计算出的偏移。
依次提取特征:
0x1c236f8偏移对应地址为 0x140CA36F8,
特征:40 0f b6 d7 48 89 04 d1 f0 ff 40 2c
图中的loc_140CA36F7+1 :
0x1B9c8e0 偏移对应地址为 0x140C1C8E0,
特征:81 c1 00 10 00 00
图中的 140c1c8db+5 :
0x1c82188 偏移对应地址为 0x140d02188,
特征:0f bf 47 42 ff c6 48 81 c3 70 01 00 00 3b f0
0x1cbd628无法定位到,可以用相对偏移去尝试,0x1cbd628 - 0x1c236f8,或者其他全局地址的相对差值去尝试。
后记
到此为止,外挂如何读取坐标画框的过程已清楚。本着技术交流的目的这里只分析外挂就不提供外挂逆向源码以及更细节的外挂信息,以避免分析内容被外网玩家恶意利用对游戏产生二次伤害。对外挂细节实现感兴趣的同学如有需要可以自行下载外挂进行分析,相信自己动手调试一遍外挂会对理解外挂实现原理以及提升逆向能力都会有好处的。
守望先锋外挂(OWG)透视原理分析相关推荐
- 变速外挂案例及原理分析
众所周知,游戏在运行中需要以帧为单位播放画面,而计算每帧动画播放所需时间,则需要调用C库函数来获取系统时间.如: // 获取当前精确时间 gettimeofday; // 获取系统时间 clock_g ...
- 编写QQ显IP外挂插件及原理分析
鉴于目前网上关于这方面的文章少之又少,一般能找到的应该就这下面3篇(由于可能涉及版权问题,我链接就不给出了),自己在开发中也走了不少弯路,所以特此把我的开发过程写了下来,给各位做个参考把 引用: a. ...
- 外挂辅助技术原理分析
我认为网络游戏防外挂应该是从服务器代码上来控制的,要是代码写得好,BUG会很难 被玩家发现.我不赞成用外挂,但做网络游戏不能不研究. 根据我的理解说一下某些外挂的原 ...
- 逆向知识之CS辅助/外挂专题.2.实现CS1.6透视原理
逆向知识之CS辅助/外挂专题.2.实现CS1.6透视原理 一丶透视简介 我们涉及到FPS游戏.免不了说透视.自瞄什么的. 在CS1.6中. 有OpenGl.也有D3D. 透视的方法很多. gl透视(也 ...
- 守望先锋服务器不稳定,《守望先锋》国服频现高延迟掉线 手把手教你如何分析网络情况...
原标题:<守望先锋>国服频现高延迟掉线 手把手教你如何分析网络情况 最近<守望先锋>国服玩家普遍遇到高延迟和掉线问题,尤其是北方和西南地区的玩家感觉尤为严重.目前官方已经在论坛 ...
- 【ShaderLab实例笔记】Overwatch Shield - 守望先锋护盾特效制作笔记
教程链接:Overwatch Shield 项目链接:OverwatchShieldTemplate Pipeline & Shader:Built-in,Unlit 本文是对 Overwat ...
- 多人网络游戏服务器开发基础学习笔记 II: 帧同步 | 游戏客户端预测原理分析 | FPS 游戏状态同步
这篇是对书本 网络多人游戏架构与编程 的学习第二篇(第一篇:多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | ...
- 有趣!机器学习预测《守望先锋》里的赢家
网络游戏及电竞流媒体业务正在崛起为一个巨大的市场.在去年的英雄联盟世界锦标赛中,仅一场半决赛就有高达 1.06 亿人观看,甚至超过了 2018 年"超级碗"的观看人数.另一个成功的 ...
- 《守望先锋》中的末日铁拳是怎么摧毁玩家体验的?
本文约3600字,阅读需要约15分钟,内容有: 上勾拳是什么 守望先锋的战斗机制和体验 不可能三角和OPF理论 玩家行为闭环 铁拳是怎样在游戏中"作恶"的 总结 一.前言 什么?都 ...
- 使用机器学习预测电子竞技游戏《守望先锋》的胜负
摘要: 机器学习可以预测游戏的输赢?来看看Bowen Yang博士是如何构建这一模型的. <守望先锋>中的英雄 来自加州大学河滨分校的物理学博士学位的Bowen Yang正在致力于构建一个 ...
最新文章
- Unknown lifecycle phase mvn
- Add Binary
- Linux中 set、env、declare、export显示shell变量的区别
- 网页拉起QQ进行交谈
- python中frozenset( )和set()的用法区别
- JAVA中list.contains()方法,要重写equals(),hashcode()方法
- SAP Marketing Engagement Management
- 用JavaScript探测页面上的广告是否被AdBlock屏蔽了的方法
- OpenStack 是什么
- Java 设计模式 之 工厂方法模式、抽象工厂模式
- shineblink MPU6050六轴传感器测量物体姿态角
- ★三个和尚与机构臃肿的故事
- 微信公众号商城前景分析
- Android逆向分析之Xposed的hook技术
- Lambda表达式和Stream类的使用
- mysql上机实验报告_数据库上机实验7实验报告.doc
- 《马克思主义基本原理》复习重点
- python 日期字符串转换时间戳
- 字符串翻转并实现“i love china“--“china love i“
- 微信小程序web-view内嵌公众号网页分享功能实现