Frida 原理

frida,原理 · 浏览次数 : 192

小编点评

**frida注入的思路:** 1. **找到目标进程**:使用 `ptrace` 追踪目标进程。 2. **获取mmap和函数库偏移**:获取目标进程中的 mmap、dlpoen、dlsym 等函数库的偏移值。 3. **申请内存空间并启动 frida-agent**:在目标进程中申请一段内存空间,并在该内存空间中启动执行 frida-agent 的代码。 4. **发送命令给目标进程**:通过 far away 进程将 agent 与目标进程进行通信,发送命令。 5. **处理目标进程的回应**:接收目标进程的执行返回信息以及异步事件信息。 **frida-agent 的作用:** * 注入目标进程。 * 启动一个新的进程与 host 进行通信。 * 给目标进行命令执行、激活/关闭 hook、接收执行结果等操作。 * 接收到目标进程的异步事件信息。

正文

frida注入的主要思路:

1.找到目标进程,使用ptrace跟踪目标进程
2.获取mmap,dlpoen,dlsym等函数库的偏移
3.获取mmap,在目标进程申请一段内存空间,将在目标进程中找到存放(frida-agent-32/64.so),在此内存空间启动执行各种操作由agent去实现。

补充:
frida注入之后会在远端进程分配一段内存将agent拷贝过去并在目标进程中执行代码,执行完成后会 detach 目标进程
这也是为什么在 frida 先连接上目标进程后还可以用gdb/ida等调试器连接,而先gdb连接进程后 frida 就无法再次连上的原因(frida在注入时只会ptrace一下下注入完毕后就会结束ptrace所以ptrace占坑这种反调试使用spawn方式启动即可)。

frida-agent 的作用

frida-agent 注入到目标进程并启动后会启动一个新进程与 host 进行通信,从而 host 可以给目标进行发送命令,比如执行代码,激活/关闭 hook,同时也能接收到目标进程的执行返回以及异步事件信息等。

不管是Davilk 还是art模式,hook的基本原理和Xposed是类似的:** 将java 函数变成 native 函数**

检测办法:

  1. 遍历在运行的进程列表而检查fridaserver是否在运行
  2. 检测端口27047是否在监听中
  3. fridaserver通过D-Bus协议通信,我们就可以向每个开放的端口发送D-Bus AUTH消息,如果正常回复说明有frida程序再跑
  4. /proc/self/maps 检查加载的库中有没有frida的痕迹(比如frida-agent-32/64.so)
  5. 遍历/proc/self/maps里的内存mappings找到所有可执行段中的关键字符串(FRIDA等)
  6. 检测关键JAVA函数是否变成了native函数,变了说明正在被hook

与Frida 原理相似的内容:

Frida 原理

frida注入的主要思路: 1.找到目标进程,使用ptrace跟踪目标进程 2.获取mmap,dlpoen,dlsym等函数库的偏移 3.获取mmap,在目标进程申请一段内存空间,将在目标进程中找到存放(frida-agent-32/64.so),在此内存空间启动执行各种操作由agent去实现。 补

【Android逆向】脱壳项目frida_dump 原理分析

脱dex核心文件dump_dex.js 核心函数 function dump_dex() { var libart = Process.findModuleByName("libart.so"); var addr_DefineClass = null; var symbols = libart.e

【Android逆向】脱壳项目 frida-dexdump 原理分析

1. 项目代码地址 https://github.com/hluwa/frida-dexdump 2. 核心逻辑为 def dump(self): logger.info("[+] Searching...") st = time.time() ranges = self.agent.search_

[Android 逆向]frida 破解 切水果大战原版.apk

1. 手机安装该apk,运行,点击右上角礼物 提示 支付失败,请稍后重试 2. apk拖入到jadx中,待加载完毕后,搜素失败,找到疑似目标类MymmPay的关键方法payResultFalse 4. adb logcat 或者androidstudio 查看该进程的日志,发现以下日志 com.mf

frida动态插桩初探

前言 近期碰到了分析app的需求,就学习了一下 frida的动态插桩技术。frida是一款轻量级HOOK框架,可用于多平台上,例如android、windows、ios等。frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在我们自己的控制机上。frida上

【Android逆向】frida 破解 jwxdxnx02.apk

apk 路径: https://pan.baidu.com/s/1cUInoi 密码:07p9 这题比较简单,主要是用于练习frida 1. 安装apk到手机 需要输入账号密码 2. 使用jdax 查看apk package hfdcxy.com.myapplication; import andr

【Android逆向】frida 破解 滚动的天空

1. apk 安装到手机中 2. 玩十次之后,会提示 充值 3. adb shell dumpsys window | grep mCurrentFocus 查看一些当前activity是哪一个 是 AppActivity 4. 阅读代码,感觉是unity3d做的游戏 5. apk拖入到jadx中,

【Android逆向】frida hook so 函数

1. apk来自52pojie 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 2.apktool反编译apk,拿到so文件 java -jar ../apktool_2.2.4.jar d app-debug.apk 3. 用j

【Android逆向】Frida 无脑暴力破解看雪test2.apk

1. 安装apk到手机 adb install -t test2.apk apk下载位置: https://www.kanxue.com/work-task_read-800625.htm 2. 题目提示输入一个五位的数字,那么可以尝试暴力破解 3. apk拖入到jadx中可以看到 public c

【Android逆向】静态分析+frida破解test2.apk

有了上一篇的基础 https://www.cnblogs.com/gradyblog/p/17152108.html 现在尝试静态分析的方式来处理 为什么还要多此一举,因为题眼告诉了我们是五位数字,所以可以爆破,不告诉这个题眼的话,就得分析 1. IDA 打开libroysue.so,查看JNI_O