目录
- Hook介绍
- Frida介绍
- Android端安装步骤
- 根据CPU架构选择frida-server
- Android安装frida-server
- PC端安装步骤
- pip安装组件
- PC端验证 frida-server 是否成功
- 遇到的坑
- github上有一些回答
- 解决
Hook介绍
frida是android hook技术中的一种,hook的主要作用就是,在不破坏apk的情况下实现对 apk 内的函数,进行修改参数、返回值操作,这样就改变了函数原本的执行结构,达到我们自己设想的流程,完成我们的目的。
Frida介绍
frida环境的搭建主要分为两个部分, 一部分是运行在系统上的交互工具 frida - CLI,另一部分是运行在Android机器上的注入工具 frida - server。下面 frida-server我简称为Android端、frida CLI我简称为PC端。把这两端的环境设置好了,就能在PC端注入Andorid系统了。
分为两部分:
- frida - CLI (PC端)
- frida - server (Android端)
Android端安装步骤
根据CPU架构选择frida-server
Android手机主要是安装一个 frida-server,安装前,但是需要根据不同的cpu架构去选择 frida-server ,使用cat /proc/cp 命令查询自己android CPU是什么架构,就知道要选择什么frida-server版本了,不然架构不对会报错。
先使用adb shell 进入android shell,查看自己CPU是什么架构使用cat /proc/cpuinfo 这个命令(和linux 命令一致)。
现在主流的CPU架构分类为:
- x86
- arm
下载地址:https://github.com/frida/frida/releases
我这个是 arm 架构的,下载好了之后解压,就可以开始安装了。
Android安装frida-server
adb push frida-server /data/local/tmp # adb push 参数1 参数2
adb shell
su
cd data/local/tmp
chmod 777 frida-server
ls -all # 验证是否777
-rwxrwxrwx shell shell 21248332 2019-01-03 17:29 frida-server-12.2.27-android-arm
./frida-server # 必须运行
必须root,必须真机,不要用虚拟机!!!使用虚拟机如果CPU使用混合模式就会报错,新手尽量使用真机避免这个坑。
如果程序一直处于后台运行状态(如下图),不返回shell就是正常的。
PC端安装步骤
pip安装组件
最好用py3环境安装以下两个组件。
pip install frida
pip install frida-tools
pip list # 验证一下看安装是否成功
PC端验证 frida-server 是否成功
# 端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
frida-ps -R
# 或
frida-ps -U
遇到的坑
我在上面连说3次安卓模拟器都是垃圾,因为我这里踩到了,我使用夜神、逍遥安卓模拟器都遇到这个问题,浪费了很多时间,我不希望大家再在环境上浪费掉宝贵的时间。
frida.frida.get_usb_device().attach('com.XXX.XXX')的报错信息:
TransportError: the connection is closed
frida-server的报错信息:
Frida:ERROR:../../../frida-core/src/linux/frida-helper-service-glue.c:2929:frida_resolve_library_function: assertion failed (local_library_path == remote_library_path): ("/system/lib/libc.so" == "/system/lib/arm/libc.so")
github上有一些回答
Mixed-architecture emulators are not supported. Please use a plain emulator or a real device. (Or contribute support for this.)
Systems like Genymotion, that emulate ARM binaries through qemu-user, are not supported. (PRs welcome though!)
解决
换真机,完美解决。