FRIDA 实用手册
作者 星均,高德开发工程师
本文目的是作为工具类文章,收集整理了一些 FRIDA 的使用技巧和用例,方便同学们在开发使用过程中开袋即食。
frida 的基础教程可以直接参看官网说明。
https://www.frida.re/docs/examples/android/?spm=a2c4e.11153940.blogcont690210.16.662657859DHOCA
Python 部分
JS 中文支持
使用 codecs.open(scriptpath, "r", "utf-8") 打开文件读取 js 即可。
获取指定 UID 设备
device = frida.get_device_manager().get_device("094fdb0a0b0df7f8")
获取远程设备
mgr = frida.get_device_manager()
device = mgr.add_remote_device("30.137.25.128:13355")
启动调试进程
pid = device.spawn([packename])
process = device.attach(pid)
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
device.resume(pid)
python 与 js 交互的官方示例
从 bytecode 加载脚本
JS 部分
hook Android 短信发送 SendDataMessage
定时执行函数
1.setTimeout 延迟执行一次
setTimeout(funcA, 15000);
2.setInterval 间隔循环执行
var id_ = setInterval(funcB, 15000);
clearInterval(id_); // 终止
bin array 转字符串
自己封装输出函数加入线程ID 和时间
打印 Android Java 层堆栈
var showStacks = function () {
Java.perform(function () {
dmLogout(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new())); // 打印堆栈
});
}
TracerPid fgets 反调试
反调试时读取 LR 寄存器溯源
hook JNI API NewStringUTF
hook JNI API GetStringUTFChars
循环输出参数的值
hook Android URI 打印堆栈
hook KXmlSerializer 拼装内容
hook Android Log 输出
native 主动调用
如果觉得本文还不错,点击好看一下!