和平精英辅助APK逆向分析

日期: 栏目:和平精英外挂 浏览:

功能强大,支持修改报文

仅支持

、Mac

可以按照域名进行分层级查看

需要收费

Burp Suite

支持java的平台

黑客喜欢用的功能强大工具

界面不是很好看

2.2 模拟器

PS:只支持系统、Mac系统(M1暂不支持)

PS:只支持系统、Mac系统(M1暂不支持)

PS:只支持系统

PS:只支持系统

0x03 加固特征库

assets/.appkey
assets/libjiagu.so
assets/libjiagu_art.so
assets/libjiagu_x86.so
assets/libprotectClass.so

lib/armeabi/libexecmain.so
assets/ijiami.ajm
ijiami.dat
assets/af.bin
assets/signed.bin
assets/ijm_lib/armeabi/libexec.so
assets/ijm_lib/X86/libexec.so

assets/dex.dat
lib/armeabi/kdpdata.so
lib/armeabi/libkdp.so
lib/armeabi/libkwscmm.so
libkwscr.so
libkwslinker.so

免费版

assets/secData0.jar
lib/armeabi/libSecShell.so
lib/armeabi/libSecShell-x86.so
libsecexe.so
libsecmain.so
libDexHelper.so

定制版

assets/classes.jar
lib/armeabi/DexHelper.so
libDexHelper-x86.so
DexHelper.so

tencent_stub
lib/armeabi/libshella-xxxx.so
lib/armeabi/libshellx-xxxx.so
lib/armeabi/mix.dex
lib/armeabi/mixz.dex
libtup.so
libexec.so
libshell.so

assets/libtosprotection.armeabi-v7a.so
assets/libtosprotection.armeabi.so
assets/libtosprotection.x86.so
assets/tosversion
lib/armeabi/libtest.so
lib/armeabi/libTmsdk-xxx-mfr.so

lib/armeabi/libx3g.so

aliprotect.dat
assets/armeabi/libfakejni.so
assets/armeabi/libzuma.so
assets/libzuma.so
assets/libzumadata.so
assets/libpreverify1.so
libsgmain.so
libsgsecuritybody.so
libmobisec.so

assets/classes.dex.dat
assets/dp.arm-v7.so.dat
assets/dp.arm.so.dat

libegis.so
libNSaferOnly.so

libAPKProtect.so

lib/armeabi/libbaiduprotect.so
assets/baiduprotect1.jar
或者
assets/baiduprotect.jar

assets/itse
lib/armeabi/libitsec.so

assets/jiagu_data.bin
assets/sign.bin
lib/armeabi/libapktoolplus_jiagu.so

libedog.so/libddog.so
libfdog.so
libedog.so
libchaosvmp.so

libegis.so
libNSaferOnly.so

libapssec.so

librsprotect.so

libnqshield.so

libnesec.so

assets/libuusafe.jar.so
assets/libuusafe.so
lib/armeabi/libuusafeempty.so

assets/mogosec_classes
assets/mogosec_data
assets/mogosec_dexinfo
assets/mogosec_march
lib/armeabi/libcmvmp.so
lib/armeabi/libmogosec_dex.so
lib/armeabi/libmogosec_sodecrypt.so
lib/armeabi/libmogosecurity.so

assets/libreincp.so
assets/libreincp_x86.so

部分壳的

s.h.e.l.l.S

com.stub.StubApp

com.Kiwisec.KiwiSecApplication
com.Kiwisec.ProxyApplication
或者干脆没有application

com.secshell.secData.ApplicationWrapper

com.tencent.StubShell.TxAppEntry

c.b.c.b

MyWrapperProxyApplication

cn.securitystack.stee.AppStub

com.linchaolong.apktoolplus.jiagu.ProxyApplication

com.coral.util.StubApplication

com.mogosec.AppMgr

监测application即可

.appkey
application为com.qihoo.util.stub2678363137

application为com.secoen.apkwrapper.ApplicationWrapper

0x04 和平精英辅助分析

配置好对应配置,这样我们就可以抓包了

然后返回手机主页,再点击精英Fz APP

点击更新,此处会出现更新的链接,吐槽一哈Burp,该链接抓取时Burp的历史包里面会自动消失,建议更新时直接抓包或者使用其它的抓包协议把该请求获取到

GET /jdqsc/gx.txt HTTP/1.1
User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.2; VOG-AL00 Build/N2G48H)
Host: buwo.oss-cn-beijing.aliyuncs.com
Connection: close
Accept-Encoding: gzip, deflate

可以看到服务器是放到阿里云的对象存储OSS服务器上的,下面这个是:

防封引擎地址:

发卡地址:

该APP主要通过网络通信行为有北京阿里云服务器、蓝奏云网盘、第三方平台的付款和注册卡做通信和验证

先将APK后缀改为ZIP后解压包后,将里面的.dex文件复制出来,然后放到路径下,执行如下命令:

d2j-dex2jar.bat classes.dex

如上图发现入口类类被处理过了,APP做了加固

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

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

PS:APP的类中的和这两个函数是最先获取执行权进行代码执行的。这也是为什么很多加固工具的主要逻辑都是通过替换APP入口,并自实现这两个函数从而达到加固的效果

上面截图中,发现存在如下特征:

com.stub.StubApp
assets/.appkey
assets/libjiagu.so

PS:发现该APP是360加固

4.1 Frida 脱壳工具

壳的种类非常多,可以简单的分为以下三类:

4.1.1 Frida-

firda- 原理是利用frida hook .so中的方法,拿到内存中dex的地址,计算出dex文件的大小,从内存中将dex导出,我们可以查看项目中的 .js 文件中的代码更清晰直观地了解

项目地址:

frida -U -f   com.APK进程名   -l. dexDump.js. --no-pause

PS:将 dex 文件并 dump 下来,保存在 data/data/ 目录下

4.1.2 FRIDA-

脱壳后的dex文件保存在PC端main.py同一目录下,以包名为文件名

项目地址:

4.1.3

文件头搜索dex,来脱壳

项目地址:

PS:会搜索 dex 文件并 dump 下来,保存在 data/data//files 目录下

4.1.4 FART

Frida 版的 Fart, 目前只能在 上使用该frida版fart是使用hook的方式实现的函数粒度的脱壳,仅仅是对类中的所有函数进行了加载,但依然可以解决绝大多数的抽取保护

项目地址:

解压 .zip 将目录中的 fart.so 与 .so 推送到 /data/app目录下 并使用 chmod 777 需要以spawn方式启动app,等待app进入界面后,执行fart()函数即可。如app包名为com..test,则

frida -U -f com.xxx.test -l frida_fart_hook.js --no-pause

高级用法:

如果发现某个类中的函数的CodeItem没有dump下来,
可以调用dump(classname),传入要处理的类名,
完成对该类下的所有函数体的dump,
dump下来的函数体会追加到bin文件当中

PS:于被动调用的脱壳修复,由于代码覆盖率低,不可能触发app中的所有函数的调用,因此,修复的范围有限

4.1.5

是一个运行在手机上的脱壳工具,支持5.0~12,无需依赖任何环境任何手机都可以使用,包括模拟器。只需几秒,即可对已安装包括未安装的APK进行脱壳。

项目地址:

4.2 脱壳

APP脱壳原理

在壳app解密源apk的dex之后,源apk被加载之前,拦截这个过程中的系统函数,把内存中的dex文件dump拿出来

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

工具:

pip3 install frida-tools

adb.exe push C:\xxx\frida-unpack\inject.sh  /data
cd /data
chmod +x inject.sh

# 转发frida端口
adb.exe forward tcp:27042 tcp:27042adb.exe forward tcp:27043 tcp:27043adb.exe forward tcp:38089 tcp:38089# 启动frida并修改监听端口(防止部分app监测默认端口)
adb.exe shell /data/local/tmp/ -l 0.0.0.0:38089

CPU架构描述

第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢

-v7a

第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能

arm64-v8a

第8代,64位,包含 、两个执行状态对应32、64bit

x86

位,一般用于平板电脑

位,一般用于平板电脑

mips

少接触

少接触

adb shell getprop ro.product.cpu.abi

adb.exe push E:\xxx\frida-unpack\frida-server-15.1.14-android-x86  /data/local/tmp/adb.exe shell 
cd /data/local/tmp/chmod 777 frida-server-15.1.14-android-x86./frida-server-15.1.14-android-x86

PS:可能大家会遇到脱壳失败的,多试几次

脱壳失败解决方案:

博主是多次尝试第二种方法成功,有好几次运行的时候程序闪退,可能是模拟器的缘故造成的

接下来我们再把另外一个脱一下壳

pyhon3 main.py -p 4943  -n com.zlhkjyq

0xb3c8d000.dex0xb3e77f30.dex0xb356d000.dex0xc3ee1a20.dex0xc3ee1b70.dex

从上面的几张图,发现是用易语言开发的APK,包的特征比较明显

find /  -name "*.txt"

查看其中的一些文本发现可获得APK下载的地址

将校验分享多少次可领注册码的文本内容改一下,改成20,即可领取注册码

adb.exe pull /data/media/0/stymd/ther/bmn/zscs.txt D:/

adb.exe push D:/zscs.txt  /data/media/0/stymd/ther/bmn

再次进入游戏,点击领取注册号

在我们已注册成功后,该软件会去下载防封引擎

GET /tp/xxxxx HTTP/1.1Host: iji.lanzout.comConnection: closeUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; HD1910 Build/LMY48Z; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.100 Mobile Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,en-US;q=0.8
X-Requested-With: com.android.browser

跟精英辅助Fz一样,通过本地判断的,白嫖永远是那么的理所当然,哈哈,但千万不要去购买破坏游戏规则,此处只做研究用,不提供APK样本

返回游戏,发现显示注册成功

adb.exe push D:/ff.txt  /mnt/shell/emulated/0/Dyri/yxme/winop

之前看代码逻辑时,发现它判断是通过本地,一个是判断本地是否存在vip.txt文本和分享次数是否达到20次来判断是否已注册或满足领取注册号的资格,那么本地直接创建一个vip.txt,丢进去,即可激活

PS:已知vip.txt文本为空,那么看来只是单纯的判断这个文本存不存在了

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

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

游戏中购买使用游戏辅助软件,危险系数非常高的,因为使用游戏辅助那么肯定会面临被封号的风险,其二购买游戏辅助容易出现被骗的情况

参考链接:

标签: