安卓这档事08
Frida写数据
1 | |
Frida_inlineHook与读写汇编
Inline hook(内联钩子)是一种在程序运行时修改函数执行流程的技术。它通过修改函数的原始代码,将目标函数的执行路径重定向到自定义的代码段,从而实现对目标函数的拦截和修改。
简单来说就是可以对任意地址的指令进行hook读写操作
常见inlinehook框架: Android-Inline-Hook whale Dobby substrate
找个时间看看(
1 | |
上面这个是将运行到指定地址,然后再修改寄存器:
因为是onEnter,所以是运行到这一行,然后把W22修改成1
将目标地址的汇编解析成指令
1 | |
使用Frida提供的Instruction库
在目标地址覆写汇编指令
有个用于将ARM汇编转为16进制数据的网站
1 | |
普通Native函数的主动调用
| 数据类型 | 描述 |
|---|---|
| void | 无返回值 |
| pointer | 指针 |
| int | 整数 |
| long | 长整数 |
| char | 字符 |
| float | 浮点数 |
| double | 双精度浮点数 |
| bool | 布尔值 |
1 | |
常见的Trace工具
| 工具名称 | 描述 | 链接 |
|---|---|---|
| jnitrace | 老牌,经典,信息全,携带方便 | jnitrace |
| jnitrace-engine | 基于jnitrace,可定制化 | jnitrace-engine |
| jtrace | 定制方便,信息全面,直接在_agent.js或者_agent_stable.js 里面加自己的逻辑就行 | jtrace |
| hook_art.js | 可提供jni trace,可以灵活的增加你需要hook的函数 | hook_art.js |
| JNI-Frida-Hook | 函数名已定义,方便定位 | JNI-Frida-Hook |
| findhash | ida插件,可用于检测加解密函数,也可作为Native Trace库 | findhash |
| Stalker | frida官方提供的代码跟踪引擎,可以在Native层方法级别,块级别,指令级别实现代码修改,代码跟踪 | Stalker |
| sktrace | 类似 ida 指令 trace 功能 | sktrace |
| frida-qbdi-tracer | 速度比frida stalker快,免补环境 | frida-qbdi-tracer |
有空看Stalker
frida-trace
官网文档
官网代码
frida-trace去hook调试的目标的写法,是和frida是一样的
命令例子:
1 | |
-U -F和frida是一样的,这里不再解释
-i/-a: 跟踪 C 函数或 so 库中的函数。 PS:-a 包含模块+偏移跟踪,一般用于追踪未导出函数,例子:-a "lib52pojie.so!0x4793c"
包含/排除模块或函数:
-I: 包含指定模块。-X: 排除指定模块
Java 方法跟踪:
-j JAVA_METHOD: 包含 Java 方法。-J JAVA_METHOD: 排除 Java 方法。
附加方式:
-f:通过 spwan 方式启动-F:通过 attach 方式附加当前进程
日志输出:
-o:日志输出到文件