tags: [‘frida’,‘jnitrace’,‘objection’]
categories: ‘经验教程’


# Frida

面向开发人员、逆向工程师和安全研究人员的动态检测工具包。

frida 文档:https://frida.re/docs/home/

# 对应版本

frida&frida-tools 版本对应查看 :frida-releases

找到你使用 frida 的版本,查看其版本下 frida-tools 的版本,它们就是对应版本。(建议多准备几个 Python 与 firda 的版本,因为它并不稳定)

1
2
pip install frida==14.2.13
pip install frida-tools==9.2.1

# frida-server

安卓手机需要安装 frida-server,版本与 frida 版本需一致,根据设备架构选择 x86 或 arm 等。

解压文件

1
7x x frida-server.xz

启动 frida-server

1
2
3
4
adb root
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "/data/local/tmp/frida-server"

测试服务

1
frida-ps -U  // 查看正在运行进程

显示如下内容则表示服务启动,手机重启再次执行命令启动

1
2
3
4
  PID NAME
1590 com.xxx.xxx
13194 com.xxxx.xxxxx

# 常用命令

1
frida -FU packagename -l hookscript.js

# Jnitrace

JNItrace 是一个基于 Frida 框架的Hook jni方法的库。https://github.com/chame1eon/jnitrace

Python 安装

1
pip install jnitrace   // 需要frida版本14以上

# 依赖:

  • arm、arm64、x86 或 x64 Android 设备
  • Frida 安装在 Android 设备上
  • Frida 支持 > 14
  • 使用 Python 3 和 pip 的 Linux、Mac 或 Windows 主机

# 启动命令:

两个参数分别为待分析的 SO APP 包名。-l 参数可以多次使用 <font style="color:rgb(70, 70, 70);background-color:rgb(253, 253, 253);">-l libname.so -l libname1.so ...</font>

1
jnitrace -l libname.so packagename

默认使用 spawn 启动,可以通过 -m attach 设置通过 attach 启。

1
jnitrace -m attach -l libname.so packagename

>> 导出 log 日志保存至文件,控制台将不输出 log。

例: jnitrace -l libname packagename >> jnitrace.txt

# objection

# 安装

官方安装教程:https://github.com/sensepost/objection/wiki/Installation

1
pip3 install -U objection

在内存中所有已加载的类中搜索包含特定关键词的类

1
android hooking search classes

hook java 方法

1
android hooking watch class_method <methodName>

hook java 类

1
android hooking watch class <classname>

列出进程所有的 activity

1
android hooking list activities