对吃鸡APP的分析

2022-01-04 10:32:46 浏览数 (2)

背景

在无意间发现某QQ群里,在推广售卖一个月70元的和平精英游戏的APP作弊软件。从APP作弊软件的页面功能展示上可以看到,该APP作弊软件有很经典的全图透视,人物上色,无后座力,子弹穿墙,方框绘制,附近人数等功能。下面就从抓包、脱壳、功能代码解析方面,解析该APP的一些关键功能,如注册功能、辅助作弊功能。

APP抓包

下面主要以charles抓包工具和逍遥模拟器为介质,进行对APP网络包数据和行为分析。通过APP抓包数据,可以确定该APP数据包都是没做任何加密保护或防抓包保护。所以对于该APP包分析还是相对简单的。下面就简单说明下抓包设置还有几个关键的数据包。

charles抓包配置方法

1.在charles抓包工具设置要进行抓包用的端口号。

2.模拟器或者真机上设置好主机的ip地址和charle工具一致的端口号。

主要就是保证charles和模拟器或真机上连接在同一网络同一端口即可。

APP软件更新的包信息

通过charles工具拦截到,上面的网络通信数据包信息,可以清晰的看到该APP的服务器是放在北京的阿里云,通过校验服务端的gx.txt文件,进行判断是否需要进行对APP版本包的更新。

防封引擎APP下载

通过上面的网络通信包数据分析,该APP还会从北京阿里云服务器或蓝奏云网盘上(https://pan.lanzouw.com/ipyI0xp25yj?p),进行下载配套的防封引擎插件APP,这样通过两APP进行配合使用,以达到相对游戏作弊行为。

通过抓包分析可以看到该APP,它在售卖和发放注册卡功能,它是放在第三方平台https://www.mayifk.cn/details/9411BD8C上进行做收款并发放注册卡的。

基于对APP的所有网络通信包分析,可以得出一个结果,该APP作弊软件作者,主要的网络通信行为有北京阿里云服务器、蓝奏云网盘、第三方平台的付款和注册卡做通信和验证。基于服务器信息和付款信息,可以很快速的追踪到该作者的相关信息。

APP脱壳

通过用jadx工具(还有jeb、androidkiller等工具)查看APP解压后的dex文件,通过工具展示的信息,可以看到该dex文件的入口类Application类已经被处理过了,也就是该APP用了第三方加固软件,进行加固保护过的。

识别APP是否加固的小方法

1、将app解压出来查看assets目录下,是否有对应的so文件,这个目录下的so文件名称是可以作为识别是什么加固厂商的方法。

2、将app拖到反编译工具,如jadx工具上,通过工具可以看出Application的入口类是否被替换,还有是否存在加固厂商的特征。

我们知道在APP的Application类中的attachBaseContext和onCreate这两个函数是最先获取执行权进行代码执行的。这也是为什么很多加固工具的主要逻辑都是通过替换APP入口Application,并自实现这两个函数从而达到加固的效果。通过上面的分析该APP采用的360加固进行最App做加固。那么要分析该dex文件的信息就需要进行做脱壳的操作。

APP要成功脱壳两个最为关键的要素

1、内存中dex的起始地址和大小,只有拿到这两个要素,才能够成功dump下内存中的dex。

2、脱壳时机,只有正确的脱壳时机,才能够dump下明文状态的dex。否则,时机不对,及时是正确的起始地址和大小,dump下来的也可能只是密文。

APP脱壳的原理

对于完整的dex文件,采用暴力搜索方式搜索dex035关键特征,对于抹掉头文件信息的dex如抹掉dex035这个的magic bytes 信息,这个时候就需要通过匹配一些特征来进行搜索。

下面通过frida框架和frida_dexdump脚本(通过暴力搜索dex035)对该360壳进行脱壳操作,可以很顺利的脱掉该APP的360加固保护,最终解密出多个dex文件。

APP功能解析

通过对APP脱壳后,就可以解析dex的代码功能了,通过下面的dex文件信息可以看出,APP是通过基于E4A开发的也就是易语言安卓的中文版编程的

因为在测试随便输入一个注册码的时候,发现该APP没有网络通信行为,所以她是一个本机校验的过程。通过下面的代码我们得出,该APP是否注册是通过校验本地是否有vip.txt文件,只要本地有vip.txt文件,那么就会通过本地的注册验证,实现到真正的注册功能。

通过下面截图可以看出,只要通过向QQ或者微信分析也可以获取注册码,这个可以通过假分享就可以实现次数的统计,只要点击对应分享然后切换回来就可以做实现计数的统计了。最后获取到注册码。

通过下面的代码,可以看到本地记录分享次数的文件是zscs.txt文件,那么只要将文件中的数据直接改为20,那么也就可以获取到一个注册码

该APP外挂的防封引擎,它是通过将作弊功能的代码注入到游戏客户端上,而实现游戏作弊的功能和效果。

要实现游戏作弊功能,从业务层面上就是修改游戏角色属性或者关键函数参数、返回值信息。从底层引擎实现上来说就是通过基于修改底层渲染部分实现作弊功能,如调整子弹的速度,这样当子弹和碰撞体进行碰撞的时候,就会发生穿墙的效果。

总结

该APP通过易安卓进行编程开发游戏的作弊软件,并通过对APP进行加固保护保护代码。而注册卡方面相对比较弱,通过校验本地是否存在指定文件,这种很容易被绕过。游戏作弊功能上,通过修改游戏客户端数据而达到作弊功能,这种针对游戏客户端修改都是不安全的,因为这个游戏已接入了ACE反外挂检测功能,所以游戏中通过作弊软件进行作弊会有封号的风险。

0 人点赞