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 函数**
检测办法:
- 遍历在运行的进程列表而检查fridaserver是否在运行
- 检测端口27047是否在监听中
- fridaserver通过D-Bus协议通信,我们就可以向每个开放的端口发送D-Bus AUTH消息,如果正常回复说明有frida程序再跑
- /proc/self/maps 检查加载的库中有没有frida的痕迹(比如frida-agent-32/64.so)
- 遍历/proc/self/maps里的内存mappings找到所有可执行段中的关键字符串(FRIDA等)
- 检测关键JAVA函数是否变成了native函数,变了说明正在被hook
Frida 原理的更多相关文章
- 基于Frida框架打造Art模式下的脱壳工具(OpenMemory)的原理分析
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956614 作者dstmath在看雪论坛公布一个Android的art模式下基 ...
- [转帖]APP逆向神器之Frida【Android初级篇】
APP逆向神器之Frida[Android初级篇] https://juejin.im/post/5d25a543e51d455d6d5358ab 说到逆向APP,很多人首先想到的都是反编译,但是单看 ...
- mac使用frida
mac使用frida 安装 https://github.com/frida/frida/releases 根据手机的cpu的版本,选择相应的文件,一般通过手机信息可以看到 我这里是frida-ser ...
- 爱伪装(AWZ)/爱立思(ALS)改机改串一键新机原理分析
简介 爱伪装(AWZ)/爱立思(ALS)是一款iOS越狱系统上的改机工具,可以修改多种系统参数达到伪装设备型号及各种软硬件属性的目的,同时提供了防越狱检测机制,常用于iOS上的推广刷量,配合代理/VP ...
- 插桩 inline hook 动态二进制插桩的原理和基本实现过程
插桩测试 https://source.android.google.cn/compatibility/tests/development/instrumentation https://zhuanl ...
- frida入门总结
一.Frida概述 Frida是一款轻量级HOOK框架,可用于多平台上,例如android.windows.ios等. frida分为两部分,服务端运行在目标机上,通过注入进程的方式来 ...
- app逆向万能的md5加密hook破解入参方法(其他加密用通用方法原理差不多,小白推荐)
一.原理 安卓开发调用md5加密时候都会调用到系统类java.security.MessageDigest 加密时候会会调用里面2个关键方法update以及digest 根据这个原理我们开始写代码吧 ...
- 写一个frida通杀脚本
1. 前言 过年对我来说和平常没什么区别,该干什么干什么. 之前没接触过 frida 这个工具,前几天用了一些时间学习了一下,相比于 xposed hook 框架,frida 相对于调试方面真的很方便 ...
- 奇异值分解(SVD)原理与在降维中的应用
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
随机推荐
- TiDB恢复部分表的方式方法
TiDB恢复部分表的方式方法 背景 今天同事告知误删了部分表. 因为是UAT准生产的环境, 所以仅有每天晚上11点的备份处理. 同时告知 昨天的数据也可以. 得到认可后进行了 TiDB的单表备份恢复. ...
- [转帖]Oracle中INITRANS和MAXTRANS参数
每个块都有一个块首部.这个块首部中有一个事务表.事务表中会建立一些条目来描述哪些事务将块上的哪些行/元素锁定.这个事务表的初始大小由对象的INITRANS 设置指定.对于表,这个值默认为2(索引的IN ...
- 冷备PG数据库并且直接使用Docker运行的方法
PG数据库冷备以及使用Docker恢复运行的方法 总结: Docker运行命令 docker run -d --name postgres5433 --restart always -e POSTGR ...
- 使用rpmbuild打包erlang和rabbitmq进行部署服务的方法
使用rpmbuild打包erlang和rabbitmq进行部署服务的方法 背景说明 1. rabbitmq 是基于 erlang 开发的消息列队, 本身rabbitmq 自己不区分架构. 2. 但是e ...
- WebAssembly入门笔记[1]:与JavaScript的交互
前一阵子利用Balazor开发了一个NuGet站点,对WebAssembly进行了初步的了解,觉得挺有意思.在接下来的一系列文章中,我们将通过实例演示的方式介绍WebAssembly的一些基本概念和编 ...
- postman数据驱动(.csv文件)
做api测试的时候同一个接口我们会用大量的数据(正常流/异常流)去验证,要是一种场 景写一个接口的话相对于比较麻烦,这个时候就可以使用数据驱动来实现 1.本地创建一个txt文件,第一行写上字段名,多个 ...
- ES客户端spring-boot-starter-data-elasticsearch
ES客户端分类 Es-Server提供RESTFul-Api,客户端通过发起http请求,调用api实现索引库的管理,数据的交换,server端状态的监控...... 官方java客户端: <d ...
- Docker 安装 MySQL8 数据库
创建数据卷 mkdir -p /usr/mysql/conf /usr/mysql/data chmod -R 755 /usr/mysql/ 创建配置文件 vim /usr/mysql/conf/m ...
- Python 基础知识点归纳
Python 是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言,笔记内容包括编译安装python,python列表,字典,元组,文件操作等命令的基本使用技巧. 编译安装 Python P ...
- opcache导致的RCE复现
前言 RCE得搭配着文件上传的点来进行利用 环境搭建 用docker搭个php7的环境,作者用的php7.0 docker run -itd --name php7 -p 8083:80 php:7. ...