和平精英辅助APK逆向分析

admin 2022年7月22日09:30:17评论830 views字数 8208阅读27分21秒阅读模式

0x01 前言

从小道师傅那边看到一篇文章,看着操作入手要求不是很高,刚好最近在学习逆向分析,就去网上找了一下资源(此篇不提供样本APK)

和平精英辅助APK逆向分析


0x02 工具准备


2.1 抓包工具

工具名称 使用平台 优点 缺点
wireshark linux、windows linux平台支持好,功能强大 不能解析https的内容
fidder windows 功能强大,支持修改报文 仅支持windows
Charles window、Mac 可以按照域名进行分层级查看 需要收费
Burp Suite 支持java的平台 黑客喜欢用的功能强大工具 界面不是很好看


2.2 模拟器

  • 夜神模拟器

https://www.yeshen.com

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

  • 网易MUMU模拟器

https://mumu.163.com

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

  • 雷电模拟器

https://www.ldmnq.com

PS:只支持Windows系统

  • 逍遥模拟器

https://www.xyaz.cn

PS:只支持Windows系统

https://mp.weixin.qq.com/s/eDexuhi3B2vs3gEPPJBJzA


0x03 加固特征库

  • 360


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
  • Dexprotect加固


assets/classes.dex.dat
assets/dp.arm-v7.so.dat
assets/dp.arm.so.dat
  • 通付盾加固


libegis.so
libNSaferOnly.so
  • APKProtect加固


libAPKProtect.so
  • 百度加固


lib/armeabi/libbaiduprotect.so
assets/baiduprotect1.jar
或者
assets/baiduprotect.jar
  • 海云安加固


assets/itse
lib/armeabi/libitsec.so
  • apktoolplus


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
  • uu安全


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


部分壳的application

  • 爱加密


s.h.e.l.l.S
  • 360加固


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
  • apktoolplus


com.linchaolong.apktoolplus.jiagu.ProxyApplication
  • 珊瑚灵御


com.coral.util.StubApplication
  • 魔固云(中国移动加固)


com.mogosec.AppMgr
  • apktool助手伪加固特征


监测application即可
  • 假360加固


.appkey
application为com.qihoo.util.stub2678363137
  • 假梆梆加固


application为com.secoen.apkwrapper.ApplicationWrapper


0x04 和平精英辅助分析

和平精英辅助APK逆向分析
和平精英辅助APK逆向分析
和平精英辅助APK逆向分析
配置好对应配置,这样我们就可以抓包了

和平精英辅助APK逆向分析

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

和平精英辅助APK逆向分析和平精英辅助APK逆向分析

点击更新,此处会出现更新的链接,吐槽一哈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

和平精英辅助APK逆向分析
和平精英辅助APK逆向分析

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

防封引擎地址:https://pan.lanzouw.com/xxx

和平精英辅助APK逆向分析

发卡地址:https://xxx

和平精英辅助APK逆向分析

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

和平精英辅助APK逆向分析

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


d2j-dex2jar.bat classes.dex

和平精英辅助APK逆向分析
和平精英辅助APK逆向分析

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

  • 识别APP是否加固的小方法

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

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

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

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


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

PS:发现该APP是360加固

  • 小技巧

    • 应用程序的asset目录,知道这个目录是不参与apk的资源编译过程的,所以很多加固的应用喜欢把加密之后的源apk放到这里

    • 把源apk加密放到壳的dex文件的尾部,这种加固方式会发现使用dex2jar工具解析dex是失败的

    • libs目录

    • 把源apk加密放到so文件中,一般都是把源apk进行拆分,存到so文件中,分析难度会加大的

    • 从AndroidManifest.xml 查找入口类


4.1 Frida 脱壳工具

  • 壳的分类

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

  • 一代整体型:采用Dex整体加密,动态加载运行的机制(免费类的壳)

  • 二代函数抽取型:将方法单独抽取出来,加密保存,解密执行(某加密)

  • 三代VMP、Dex2C:独立虚拟机解释执行


4.1.1 Frida-Unpack

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

项目地址:https://github.com/GuoQiang1993/Frida-Apk-Unpack


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

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


4.1.2 FRIDA-DEXDump

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

项目地址:https://github.com/hluwa/FRIDA-DEXDump


4.1.3 frida_dump

文件头搜索dex,来脱壳

项目地址:https://github.com/lasting-yang/frida_dump

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


4.1.4 FART

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

项目地址:https://github.com/hanbinglengyue/FART

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

frida -U -f com.xxx.test -l frida_fart_hook.js --no-pause
  • 等待app进入主界面,执行fart()


高级用法:

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

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


4.1.5 BlackDex

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

项目地址:https://github.com/CodingGay/BlackDex


4.2 脱壳

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

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

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

  • APP脱壳原理

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

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

工具:https://github.com/dstmath/frida-unpack

  • 需要安装frida环境

https://frida.re


pip3 install frida-tools


adb.exe push C:xxxfrida-unpackinject.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
  • AndroidCPU架构

CPU架构 描述
armeabi 第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢
armeabi-v7a 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能
arm64-v8a 第8代,64位,包含 Aarch32、Arch64两个执行状态对应32、64bit
x86 intel32位,一般用于平板电脑
x86_64 intel64位,一般用于平板电脑
mips 少接触
mips64 少接触
  • 获取当前模拟器的CPU,好选择frida-server的版本


adb shell getprop ro.product.cpu.abi


adb.exe push E:xxxfrida-unpackfrida-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

和平精英辅助APK逆向分析

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

和平精英辅助APK逆向分析

脱壳失败解决方案:

  • 1、多试几次python main.py -n com.jyzlhkj

  • 2、尝试python main.py -n com.jyzlhkj -p 进程ID号

  • 3、尝试python main.py -n com.jyzlhkj -p 进程ID号 -f

  • 4、非root权限的话,尝试sudo sysctl kernel.yama.ptrace_scope=0 ,或 以root权限运行frida

  • 5、frida版本换一个,不要最新版的

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

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


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

和平精英辅助APK逆向分析
和平精英辅助APK逆向分析

  • 精英Fz文件反编译出如下dex文件,其中0xc3ee1a20.dex、0xc3ee1b70.dex未反编译成功


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

和平精英辅助APK逆向分析
和平精英辅助APK逆向分析
和平精英辅助APK逆向分析

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

和平精英辅助APK逆向分析
和平精英辅助APK逆向分析
和平精英辅助APK逆向分析


find /  -name "*.txt"

和平精英辅助APK逆向分析
查看其中的一些文本发现可获得APK下载的地址

和平精英辅助APK逆向分析
和平精英辅助APK逆向分析
将校验分享多少次可领注册码的文本内容改一下,改成20,即可领取注册码


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

和平精英辅助APK逆向分析


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

和平精英辅助APK逆向分析

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

和平精英辅助APK逆向分析
和平精英辅助APK逆向分析

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

和平精英辅助APK逆向分析

  • 下载防封引擎apk


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

和平精英辅助APK逆向分析

  • 防封引擎的破解方法

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

和平精英辅助APK逆向分析

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


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

和平精英辅助APK逆向分析

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

和平精英辅助APK逆向分析

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

和平精英辅助APK逆向分析

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

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

和平精英辅助APK逆向分析和平精英辅助APK逆向分析和平精英辅助APK逆向分析

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

参考链接

https://blog.csdn.net/g5703129/article/details/85054405

https://www.cnblogs.com/wf-l5201314/p/9714435.html

https://www.zhangkunzhi.com/index.php/archives/211/

推荐阅读
零基础一对一技术咨询服务(远程指导)
零基础学编程/零基础学安全/零基础学逆向实战速成培训班

和平精英辅助APK逆向分析


和平精英辅助APK逆向分析

原文始发于微信公众号(哆啦安全):和平精英辅助APK逆向分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月22日09:30:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   和平精英辅助APK逆向分析https://cn-sec.com/archives/1190555.html

发表评论

匿名网友 填写信息