数据分析之字符串关联分析法

字符串关联分析法简述:

游戏安全领域,无论做为防守者还是攻击者,经常都需要从二进制中定位关键数据代码和分析相关功能实现的原理,比如外挂针对安全方案检测的对抗或者游戏某个功能的实现、游戏角色、地图等等对象的基址定位,定位这些关键数据和代码,没有统一的方式,但是有各种各样思路,而通过可执行文件本身或者进程运行时的内存存在明文字符串,去关联定位相关关键数据和代码,却是最常用分析切入点之一。本文将通过寻找英雄联盟LOL角色相关信息和基址,来阐述相关思路。

关键点解析:

字符串:

指有意义的明文字符串,与要分析的数据代码有相关性,存在于静态可执行文件内或者运行时进程的内存中。对于静态文件字符串的查看方式可以直接使用IDA分析后,直接查看IDA分析出来的字符串,而对于进程中的字符串,可以尝试用工具将进程转储成文件再用IDA进行分析查看

关联:

明文字符串是一个线索,那么这个线索与关键数据代码直接的关联怎样定位呢,一种方式是对于文件或转储的dump用IDA分析,通过IDA的交叉引用来定位,另外一种方式是直接使用调试器调试进程,通过硬件断点对明文字符串下访问断点,来定位关键代码数据。

实例分析:

先简单了解一下,LOL游戏的主程序是League of Legends.exe, 由Microsoft Visual C++编译而成,游戏过程中玩家控制英雄角色进行对战,那么游戏中的人物角色对象一般都是做为一个全局的对象关联,角色对象有很多属性,如角色名、攻击力、血、等级等等。

1、静态分析League of Legends.exe

   首先用工具查看文件的相关信息,版本是6.6.137.2804

2、动态转储进程

   由于游戏可执行文件加密,故需要进入游戏使用第三方工具如PChunter将游戏进程内存   转储到磁盘文件再使用IDA对dump文件进行分析。

 

因为dump是内存,需要修复节表的RawAddress与VirtualAddress一致,这样用IDA能对进程dump进行正确分析,如下图用CFF Explorer可以直接修复保存即可:

3、关键数据分析

   将dump的文件用IDA进行分析,等待IDA分析完成之后,使用快捷键Ctrl+F12查看IDA自动分析识别出来的字符串,对于分析游戏逻辑,对于一些字符要比较敏感,如Object、role、skill、attack等等,对于LOL中对于”hero“就非常常见,这些关键字需要对游戏有一定的了解。在查看dump的字符串中,有很多关于hero的字符串,其中有一条应该能对分析定位有帮助:

查看这条字符串的交叉引用函数sub_CFF590,定位到这个字符串的引用

进入FindHeroInManager继续分析:

这个函数比较短,继续查看子函数,可以确定遍历查找的逻辑在sub_5E5260中,

这个函数仔细分析,可以指定该函数是一个对象的成员函数,查看该函数的调用过程

dword_3215C08是一个静态变量,在调用时传入地址做为this,说明这个地址是保存的一个对象,这个对象不是别的,就是HeroManager,目前还不能百分百确认,继续分析该函数的逻辑和其他参数。a2也是一个对象指针,a3是a2的成员,

目前也可以猜测a2就是一个hero对象,因为a3是a2的成员遍历,在遍历查找逻辑里面有计算hash的方法,知道查找逻辑的细节,可以通过逆向sub_5E5260的查找逻辑,知道Manager对Hero对象的存储方法。

根据以上的函数分析,全局变量dword_15A69E8也很有可能是保存英雄对象,

这个对象是不是就是我们要找的角色基址,还待验证

至少目前比较确认的是dword_3215C08是英雄管理器对象,里面通过链表保存对战各个英雄列表,当然也包括玩家控制的英雄。

4、动态确认基址

   从以上分析可以看出dword_15A69E8非常有可能是角色基址,dword_3215C08是角色管理器,这时我们动态调试一下游戏来验证一下

首先查看dword_15A69E8对象指针

根据之前的分析,查看对象的字符串

查看对应的字符串

由于windbg无法显示该字符串,故将字符存储到文件

而调试时在游戏中使用的登录名就是该字符串:

从而动态确认dword_15A69E8为角色基址,利用上面取字符串的方式可以获取角色名,同时也可以将HeroManager的遍历算法逆向出来,可以遍历当前游戏中的所有英雄,以此为切入口可以分析游戏更多的功能数据。

总结:

利用字符串来定位关键代码数据,有时有意想不到的效果,由于例子偏重于静态分析代码逻辑,如果在实战中,静态分析配合动态调试,内存数据查看验证还有配合数据访问断点、关键函数断点分析,效率将会大大的提升,例子在此仅为说明字符串分析的思路,灵活使用大胆猜测加验证分析,将会事半功倍。

 

*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)

原文地址:https://www.cnblogs.com/nothx/p/8537310.html