游戏开发论坛

 找回密码
 立即注册
搜索
查看: 11333|回复: 0

守望先锋外挂(OWG)透视原理分析

[复制链接]

8360

主题

9283

帖子

2万

积分

论坛元老

Rank: 8Rank: 8

积分
29940
发表于 2016-9-5 10:51:30 | 显示全部楼层 |阅读模式
文/ TP游戏安全实验室

  守望先锋作为目前最为火爆的游戏,赢得了广大玩家的青睐。同时也迎来了外挂的泛滥,而这类外挂最受欢迎的功能非透视莫属了,那么方框透视功能是怎么实现的呢,本文针对比较流行的外挂OWG随大家一起进行揭秘。

  本文重点分析了OWG的透视功能的实现过程,外挂通过跨进程读取游戏内玩家的坐标信息,进行转换,创建透明窗口覆盖主用户的整个电脑桌面,在该透明窗口上进行绘制。下面我们就从如何定位外挂透视功能关键代码逻辑入手逐一进行剖析其实现过程。

  外挂透视功能实现定位:

image001.png

  选中开启方框ESP。对于这种选中框开功能的方式,最快速的办法就是:

  CE内存搜索标记位,然后记录访问此地址的代码。

image003.png

  结合IDA的交叉引用,定位到关键代码逻辑。

  其逻辑大概分为读取数据,计算,画框三大部分。

  其原理是,通过读取游戏坐标数据,进行转换,使用D2D进行绘制,关于D2D的绘制部分

  不做分析。本文主要对其数据读取与坐标转换做了分析,其次对游戏更新后,成功尝试了一次外挂的更新。有失误之处望指正。

  外挂读取玩家坐标信息过程分析

  外挂读取数据都是基于上述的几个全局地址,依次层层递归的取内容(最长的地址偏移有11个),读取过程如下图(由于读取过程太长,这里只给出了部分截图,详细注释查看附件IDB)。

image005.png

image007.png

  外挂的坐标转换逻辑

  外挂读取了游戏中玩家的3D坐标等数据后,需要将其转换成2D的平面坐标,然后再进行绘制,以下就是对其坐标转换进行了分析:

  数据计算部分:从0x140002c22开始到0x140002ecf,其中的调用Call 0x1400023c0为关键计算部分。

image009.png

image011.png

  绘制部分:在0x140002ff1到140003026。

image013.png

  分析过程中碰到的其它问题

  在分析外挂的时候碰到游戏更新了怎么办,相信这是很多小伙伴们的困扰。在分析OWG的时候也遇到了游戏更新。我们可以尝试自己去更新外挂用的的一些地址与偏移,碰到一些像全局地址,但有无法定位的可以用旧版的相对偏移去尝试,坐等更新就不知道猴年马月去了。在游戏的7月14号更新后,我尝试更新出了一个可运行版本。以下就是经验之谈。

  通过静态分析,结合IDA交叉引用,在IDA中我们可以看到外挂定义了这么一大堆数据,在后续分析中确定了这部分数据是读取游戏数据的使用到的偏移定义:

image015.png

  地址所在模块的加载地址+偏移的方式,能在跨进程读取中保证每次程序重启后,都能正确读取到想要的数据,甚至在确认了读取的全局变量后,在游戏的小规模更新下我们只需要更新少部分的基址与偏移后,就能再次运行起来。于是对游戏内存进行dump,然而游戏内存是这样的:

  直接工具修改页面属性,然后进行dump。

image017.png

  Xuetr挂起游戏线程,x64dbg附加批量修改内存块属性进行dump,

  IDA打开dump文件后是这样的:

image019.png

  手动去转换太慢,来段脚本:

image021.png
  强制进行代码转化后确认:
image023.png

  这2段数据中前3个为游戏的全局地址,最后一个0x1cbd628为计算出的偏移。

  依次提取特征:

  0x1c236f8偏移对应地址为 0x140CA36F8,

  特征:40 0f b6 d7 48 89 04 d1 f0 ff 40 2c

  图中的loc_140CA36F7+1 :

image025.png

  0x1B9c8e0 偏移对应地址为 0x140C1C8E0,

  特征:81 c1 00 10 00 00

  图中的 140c1c8db+5 :

image027.png

  0x1c82188 偏移对应地址为 0x140d02188,

  特征:0f bf 47 42 ff c6 48 81 c3 70 01 00 00 3b f0

image029.png

  0x1cbd628无法定位到,可以用相对偏移去尝试,0x1cbd628 - 0x1c236f8,或者其他全局地址的相对差值去尝试。

  后记

  到此为止,外挂如何读取坐标画框的过程已清楚。本着技术交流的目的这里只分析外挂就不提供外挂逆向源码以及更细节的外挂信息,以避免分析内容被外网玩家恶意利用对游戏产生二次伤害。对外挂细节实现感兴趣的同学如有需要可以自行下载外挂进行分析,相信自己动手调试一遍外挂会对理解外挂实现原理以及提升逆向能力都会有好处的。

相关阅读:守望先锋反外挂技术测评

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-20 09:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表