Frida&Xserver Hook APP
0x00 前言
测试中碰到个带有参数签名验证的APP,导致不能修改参数,于是乎想看一下其中的生成算法。之前同事用过Frida+Xserver的方法来分析,效仿一下,唯一不同之处是无需Xposed。然而因为工具原因忽略了某个重要的因素导致最终没能成功Hook目标APP,方法本身没问题(艹,好像也有问题,Hook方法报错,需要Android版本5),记录一下过程,为了下次操作方便。
0x01 环境条件
已root的Android设备(模拟器也行,这里为了测试方便用的真机)
本文失败原因就是设备Android版本问题,最终在夜神模拟器Android 5版本测试成功
Adb
Python 3.8 + pip
可以设置个国内镜像提升速度
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
-
下载Xserver.js和apk
-
下载对应构架的服务端文件
frida-server-版本-平台-架构.xz
并解压备用(在目标机shell(可用adb)上执行getprop ro.product.cpu.abi
可查看架构)
0x02 搭建过程
[额外]无线ADB
手机直接USB连接电脑用adb devices
命令查看到设备即可,此步骤无线adb非必要(我这破笔记本只有两个USB接口,插了个无线网卡不够用了才出此下策,无线adb偶尔还会断掉)
确认连接
1 | adb devices |
转换成无线,5555是端口号
1 | adb tcpip 5555 |
然后因为不知道手机ip……直接拿nmap暴力扫一下
1 | nmap -n -v -Pn -p 5555 192.168.137.0/24 |
知道ip就可以adb连接:
1 | adb connect 192.168.137.88:5555 |
移动端准备
使用adb push
把文件放到手机上
本文选择这个/data/local/tmp/
目录来存放文件
1 | adb push XServer.V0.7.1.apk /data/local/tmp/xserver.apk #无需安装,放在这里即可 |
然后进adb shell
给frida-server设置执行权限并执行
1 | adb shell |
桌面端准备
Python安装frida和依赖,注意frida和frida-server保持版本一致
1 | pip install wheel numpy matplotlib frida==14.2.11 frida-tools==9.1.0 |
以上没有问题的话运行frida-ps -U
即可看到进程PID和对应包名
0x03 使用
附加到进程
1 | frida -U 包名或者PID -l XServer.js |
然后访问手机IP:8000
即可看到Xserver界面
也可以根据提升端口转发到本机,访问本机的8000端口
1 | adb forward tcp:8000 tcp:8000 |
以上是顺利的情况,然鹅我用过时的工具以为目标APP没加固,于是乎…
也并非权限问题
回到主题
新的状况又出现了……一点hook就报错
0x04 小结
失败加失败
搜了一下Xserver的issues,好像是安卓版本问题,改日换个模拟器再战。
换了夜神安卓5版本的模拟器(x86),成功了。