FRIDA 实用手册

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 交互的官方示例


FRIDA 实用手册


从 bytecode 加载脚本


FRIDA 实用手册


JS 部分



hook Android 短信发送 SendDataMessage


FRIDA 实用手册


定时执行函数


1.setTimeout 延迟执行一次


setTimeout(funcA, 15000);


2.setInterval 间隔循环执行


var id_ = setInterval(funcB, 15000);
clearInterval(id_);    // 终止


bin array 转字符串


FRIDA 实用手册


自己封装输出函数加入线程ID 和时间


FRIDA 实用手册


打印 Android Java 层堆栈


var showStacks = function () {
   Java.perform(function () {
       dmLogout(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()));  // 打印堆栈
   });
}


TracerPid fgets 反调试


FRIDA 实用手册


反调试时读取 LR 寄存器溯源


FRIDA 实用手册


hook JNI API NewStringUTF


FRIDA 实用手册


hook JNI API GetStringUTFChars


FRIDA 实用手册


循环输出参数的值


FRIDA 实用手册


hook Android URI 打印堆栈


FRIDA 实用手册


hook KXmlSerializer 拼装内容


FRIDA 实用手册


hook Android Log 输出


FRIDA 实用手册


native 主动调用


FRIDA 实用手册


FRIDA 实用手册

如果觉得本文还不错,点击好看一下!