Frida环境搭建

目录

  • 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 命令一致)。

Frida环境搭建_第1张图片

现在主流的CPU架构分类为:

  • x86
  • arm

下载地址:https://github.com/frida/frida/releases

Frida环境搭建_第2张图片

我这个是 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就是正常的。
Frida环境搭建_第3张图片


PC端安装步骤

pip安装组件

最好用py3环境安装以下两个组件。

pip install frida
pip install frida-tools 
pip list # 验证一下看安装是否成功

1552062-20190103191139508-354555995.png

PC端验证 frida-server 是否成功

# 端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

frida-ps -R
# 或
frida-ps -U

Frida环境搭建_第4张图片
OK, 到这一步说明android、PC端都设置好了。


遇到的坑

我在上面连说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!)

解决

换真机,完美解决。

转载于:https://www.cnblogs.com/mysticbinary/articles/10214089.html

你可能感兴趣的:(移动开发,shell,嵌入式)