栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[IOV安全入门] 十四. Android安全之和平精英辅助APK逆向分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[IOV安全入门] 十四. Android安全之和平精英辅助APK逆向分析


欢迎新同学的光临
… …
人若无名,便可专心练剑


我不是一条咸鱼,而是一条死鱼啊!


0x01 前言

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

0x02 工具准备 2.1 抓包工具
工具名称使用平台优点缺点
wiresharklinux、windowslinux平台支持好,功能强大不能解析https的内容
fidderwindows功能强大,支持修改报文仅支持windows
Charleswindow、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 和平精英辅助分析




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

然后返回手机主页,再点击精英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服务器上的,下面这个是:

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

发卡地址:https://xxx

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

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

d2j-dex2jar.bat classes.dex


如上图发现入口类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:27042
adb.exe forward tcp:27043 tcp:27043
adb.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
x86intel32位,一般用于平板电脑
x86_64intel64位,一般用于平板电脑
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

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

脱壳失败解决方案:

1、多试几次python main.py -n com.jyzlhkj2、尝试python main.py -n com.jyzlhkj -p 进程ID号3、尝试python main.py -n com.jyzlhkj -p 进程ID号 -f4、非root权限的话,尝试sudo sysctl kernel.yama.ptrace_scope=0 ,或 以root权限运行frida5、frida版本换一个,不要最新版的

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

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

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


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

0xb3c8d000.dex
0xb3e77f30.dex
0xb356d000.dex
0xc3ee1a20.dex
0xc3ee1b70.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

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


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

下载防封引擎apk

GET /tp/xxxxx HTTP/1.1
Host: iji.lanzout.com
Connection: close
Upgrade-Insecure-Requests: 1
User-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.36
Accept: 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外挂的防封引擎,它是通过将作弊功能的代码注入到游戏客户端上,而实现游戏作弊的功能和效果

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

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

参考链接:

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/


我自横刀向天笑,去留肝胆两昆仑


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703973.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号