【Frida】【Android】01_手把手教你环境搭建

🛫 系列文章导航

🛫 导读

开发环境

版本号描述
文章日期2024-03-24
操作系统Win11 - 22H222621.2715
node -vv20.10.0
npm -v10.2.3
夜神模拟器7.0.5.8
Android9
python3.9.9
frida16.2.1
frida-tools12.3.0
objection1.11.0

1️⃣ 环境搭建

注意:我们首先确定使用的各种版本,参考上面的《开发环境》。

安装Android模拟器

为了方便后续学习,这里使用夜神模拟器7.0.5.8做为目标系统,安装Android9系统,如下图所示:
在这里插入图片描述

我们需要注意:

  • 为了避免使用中的各种问题,我们开启Android的root权限
  • nox_adb.exe是夜神自带的adb,我们复制一份,并命名为adb.exe
  • 保证全局只有一个adb.exe,多个版本adb会导致不同软件同时使用时,出现各种异常。
    在这里插入图片描述

安装Frida CLI

这里以常见的Python方式进行安装。

方式一:objection
objection是基于frida的三方工具,包含了很多方便的功能。
之前听说objection跟frida有版本冲突,但是直接安装objection,就可以顺便安装frida相关工具,避免冲突问题,所以我们直接执行pip install objection即可。版本列表如下图所示:
在这里插入图片描述

方式二:frida-tools
这种方式是官方提供的方式,直接执行pip install frida-tools,需要注意与objection版本的冲突问题。

ps: 除了python方式,我们还可以使用node方式,执行命令npm install -g frida-tools

安装Frida Server

由于上小节中,我们使用的frida版本是16.2.1,在开发机器上下载适用于Android设备的Frida Server版本,下载地址为:https://github.com/frida/frida/releases/tag/16.2.1
下载前,我们需要先通过adb命令查看系统的架构。执行命令adb shell getprop ro.product.cpu.abi,可以看到,架构是x86_64
在这里插入图片描述
所以,我们需要下载frida-server-16.2.1-android-x86_64.xz
在这里插入图片描述

接着,我们需要连接Android设备到计算机,并使用adb将Frida Server推送到设备上:

# fs就是frida-server的缩写
adb push frida-server-16.2.1-android-x86_64 /data/local/tmp/fs64

最后,在设备上通过adb shell,运行Frida Server:

adb shell
cd /data/local/tmp/
chmod +x fs64
./fs64 &

端口重定向:adb forward

使用adb端口转发将本地端口与Android设备上运行的Frida Server端口连接起来:

adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

2️⃣ 运行测试

Frida操作App的方式有两种。
第一种是spwan模式,简而言之就是将启动App的权利交由Frida来控制。采用这个模式时,即使目标App已经启动,在使用Frida注入程序时还是会重新启动App。在CLI模式中,Frida通过加上-f参数指定包名以spwan模式操作App。
第二种是attach模式,建立在目标App已经启动的情况下,Frida通过ptrace注入程序从而执行Hook的操作。在CLI模式中,Frida通过加上-N参数指定包名以attach模式注入App。

下面我们以系统自带的设置工具(包名为com.android.settings)为例,进行测试。

ps: 旧的frida版本,不添加任何参数,则默认会通过attach模式注入App。

spwan模式

spwan模式会自己启动目标软件com.android.settings,所以我们不必启动该软件,直接执行frida.exe -U -f com.android.settings即可。
运行后,我们执行js命令,打印[*] 开始执行 Hello World
在这里插入图片描述

Java.perform(function() {
  console.log("[*] 开始执行 Hello World");
});

attach模式

该模式不会启动目标进程,当进程不存在的时候,直接执行frida.exe -U -N com.android.settings会报下面的错误:
在这里插入图片描述

只有按照下面的步骤启动设置后,再执行frida.exe -U -N com.android.settings才能附加到进程上,然后进行交互。
在这里插入图片描述
在这里插入图片描述

直接加载脚本

通常,我们会编写脚本,然后直接加载脚本,方便测试。
frida.exe -U -l .\01_手把手教你环境搭建\index.js -N com.android.settings
效果如下:
在这里插入图片描述

🛬 文章小结

常用命令汇总:

REM # 开启logcat
start cmd /k "adb logcat |findstr yemao && PAUSE"

REM # 端口映射
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

REM # 重启frida-server
adb shell pkill -9 fs64
start cmd /k adb shell /data/local/tmp/fs64 -l 0.0.0.0:27042

REM # frida 命令测试
cd /d J:\_ALL\CODE\gitcode\kinghzking\MyOpen\course\frida-android
frida -U   -l build\02.js   -N com.yemao.demo

📖 参考资料

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

  • 29
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜猫逐梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值