首页 > 其他分享 >Frida 原理

Frida 原理

时间:2023-04-07 16:12:34浏览次数:38  
标签:agent 目标 hook ptrace frida 进程 Frida 原理

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

标签:agent,目标,hook,ptrace,frida,进程,Frida,原理
From: https://www.cnblogs.com/gradyblog/p/17296481.html

相关文章

  • Ioc底层核心原理-组件扫描过滤器
              ......
  • TEB算法原理与代码分析 详细文档+代码分析+matlab程序包
    TEB算法原理与代码分析详细文档+代码分析+matlab程序包YID:4179654252546507......
  • 移动端动态更新背后的原理及技术原理
    ​作为开发人员来说,掌握动态研发模式的技术和方法也有一定的价值,至少了解一个技术原理可以提高自己的技术水平和竞争力。动态研发模式在移动端应用程序开发中具有重要的价值和作用,可以帮助企业快速响应市场需求、降低开发成本、提高应用程序的稳定性和安全性、适应不同的平台和设......
  • SpringBoot2核心技术篇(自动配置原理入门[一])
    1.SpringBoot特点1.1依赖管理父项目做依赖管理<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.11</version></parent>几乎声明了所有开发中......
  • Frida 原理及简单使用
    Frida简介Frida是一款基于Python+JavaScript的hook框架,本质是一种动态插桩技术。可以用于Android、Windows、iOS等各大平台,其执行脚本基于Python或者Node.js写成,而注入代码用JavaScript写成,所以有必要了解一些这些语言的语法。本文主要讲述了Android上Frida框架的使用。原理......
  • 数据库系统原理之数据管理技术的发展
    数据管理技术的发展第一节数据库技术发展概述数据模型是数据库系统的核心和基础以数据模型的发展为主线,数据库技术可以相应地分为三个发展阶段:第一代的网状、层次数据库系统第二代的关系数据库系统新一代的数据库系统一、第一代数据库系统层次数据库系统层次模......
  • flask请求上下文分析,源码request原理,wtforms,精确导出依赖,函数和方法,threading.locl对
    内容回顾蓝图第一步:导入第二步:实例化得到对象,可以指定static和templates第三步:app中注册蓝图,注册蓝图时,可以指定前缀第四步:使用蓝图,注册路由,注册请求扩展g对象当次请求的全局对象,在当次请求中可以放值和取值跟session的区别是session可以在多次请求中使用,g对象只在当次请......
  • 软考笔记(9)--计算机组成原理3--处理器
    一、CPU的整体结构CPU是由控制器和运算器两大部分组成,控制器是整个系统的指挥中心,在控制器的控制之下,运算器、存储器和输入输出设备等部件构成了一个整体。1.1、CPU的功能计算机的工作过程就是计算机中程序的执行过程,首先将程序和原始数据预先通过输入设备送到主存储器中存储起......
  • 发那科FANUC电路板图纸 全套驱动图纸 原理图 电源图
    发那科FANUC电路板图纸 全套驱动图纸原理图 电源图,维修人员必备电路图。YID:6888671377510240......
  • is620n,is620p,is620,伺服驱动器的代码和原理等
    is620n,is620p,is620,伺服驱动器的代码和原理等YID:2899662030618032......