apk脱壳linux,使用Frida给apk脱壳并穿透加固Hook函数

本文介绍了如何使用Frida在Linux环境下对apk进行脱壳,通过动态二进制插桩技术查找并Hook关键函数,以绕过应用的VIP限制。通过分析dex头部、使用frida-server、编写frida脚本,最终成功注入脚本,实现对应用行为的控制。
摘要由CSDN通过智能技术生成

前言

今天拿到了新玩具JEB 3.17.1,想测试一下,顺便学习学习Android逆向,于是找了一个apk准备试试水,看看能不能搞到VIP。

初步分析

拖入jeb查看

c6d631b472640ca55634a7029baaf3b3.png

嗯。。google一下

878c9992591a671a134ad20e41b892fd.png

几维安全的壳,虚拟化很烦,也没什么好的脱壳工具,于是切换思路

从本质上来说,虚拟化就是自己实现了一套基本的cpu指令,通过自己的解释器解释给机器。因此想要在虚拟化之后仍然能让机器运行,当然还得还原代码给机器,只不过可能在内存中释放,加大了静态分析的难度。

那么直接让apk运行起来,我们去dump虚拟机自解密出来的dex不就好了么。

frida dump dex

frida 是一款基于 python+javascript 的 hook 框架,可运行在 android、ios、linux、win等各个平台,主要使用的动态二进制插桩技术。

总之frida是非常强大的,可以实现很多奇妙操作。

安装

pip3 install frida

frida-server

到上面链接里找到对应手机架构,与frida版本相同的frida-server

移动frida-server到安卓的/data/local/tmp目录

./adb push frida-server /data/local/tmp

./adb kill-server && ./adb server && ./adb shell # 这里我用了mumu模拟器,其他虚拟机连接adb方法请自行查询

cd /data/local/tmp

chmod 777 frida-server

./frida-server #开始你的炸弹秀

frida脚本

其原理就是在内存中检索dex035头并获取dex长度,然后提取出来。当然,这样做会将内存中所有的dex包都提取出来,具体哪个才是我们需要的得根据包名判断并静态分析查看。

python3 ./main.py

这里我成功提取到了无壳dex,包名都比较清晰

22f7da37970bd6c42d56da94aba0b761.png

抓包分析

既然壳不好脱而且脱下来的又不容易修复,就考虑先看看封包里有没有VIP数据

使用HttpCanary对apk进行抓包

抓到了一个登陆验证包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值