《 FRIDA系列文章 》
转载:《FRIDA系列文章》github 地址:https://github.com/r0ysue/AndroidSecurityStudy
由 Frida 提供的很棒的 项目、库和工具的精选列表:https://github.com/dweinstein/awesome-frida
《Frida操作手册》:https://github.com/hookmaster/frida-all-in-one
A. 环境准备 和 入门篇
01.Android环境准备:谷歌原版镜像8.1、TWRP、Magisk root
:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/A01/README.md
02.一篇文章带你领悟frida的精髓(基于安卓8.1)
:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/A02/README.md
frida 是啥?
frida 为什么这么火?
frida 实操环境
基本能力Ⅰ:hook参数、修改结果
基本能力Ⅱ:参数构造、方法重载、隐藏函数的处理
中级能力:远程调用
高级能力:互联互通、动态修改
B. FRIDA 脚本篇
枚举所有的类、定位目标类并打印类的实例、枚举所有方法并定位方法
- 01. FRIDA脚本系列(一)入门篇:在安卓8.1上dump蓝牙接口和实例:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/B01/README.md
hook 方法的所有重载、类的所有方法、类的所有子类、本地库的导出函数
- 02.FRIDA脚本系列(二)成长篇:动静态结合逆向WhatsApp:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/B02/README.md
- 03.FRIDA脚本系列(三)超神篇:百度AI“调教”抖音AI
- 04.FRIDA脚本系列(四)更新篇:几个主要机制的大更新
C. FRIDA API 篇
frida 变量类型 ( Data Types, Function and Callback )
:https://frida.re/docs/javascript-api/
索引 | API | 含义 |
---|---|---|
1 | new Int64(v) | 定义一个有符号Int64类型的变量值为v,参数v可以是字符串或者以0x开头的的十六进制值 |
2 | new UInt64(v) | 定义一个无符号Int64类型的变量值为v,参数v可以是字符串或者以0x开头的的十六进制值 |
3 | new NativePointer(s) | 定义一个指针,指针地址为s ( NativePointer对象 等价于 C语言中的指针 ) |
4 | ptr(“0”) | 同上 |
代码示例以及效果
Java.perform(function () {console.log("");console.log("new Int64(1):"+new Int64(1));console.log("new UInt64(1):"+new UInt64(1));console.log("new NativePointer(0xEC644071):"+new NativePointer(0xEC644071));console.log("new ptr('0xEC644071'):"+new ptr(0xEC644071));
});输出效果如下:new Int64(1):1new UInt64(1):1new NativePointer(0xEC644071):0xec644071new ptr('0xEC644071'):0xec644071
frida
也为 Int64(v)
提供了一些相关的 API:
索引 | API | 含义 |
---|---|---|
1 | add(rhs)、sub(rhs)、and(rhs)、or(rhs)、xor(rhs) | 加、减、逻辑运算 |
2 | shr(N)、shl(n) | 向右/向左移位n位生成新的Int64 |
3 | Compare(Rhs) | 返回整数比较结果 |
4 | toNumber() | 转换为数字 |
5 | toString([radix=10]) | 转换为可选基数的字符串(默认为10) |
使用案例,代码如下。
function hello_type() {Java.perform(function () {console.log("");//8888 + 1 = 8889console.log("8888 + 1:"+new Int64("8888").add(1));//8888 - 1 = 8887console.log("8888 - 1:"+new Int64("8888").sub(1));//8888 << 1 = 4444console.log("8888 << 1:"+new Int64("8888").shr(1));//8888 == 22 = 1 1是falseconsole.log("8888 == 22:"+new Int64("8888").compare(22));//转stringconsole.log("8888 toString:"+new Int64("8888").toString());});
}
拦截 java 层函数
- 01. FRIDA-API使用篇:FRIDA输出打印、frida变量类型、rpc、Process、Module、Memory 使用方法及示例:https://www.anquanke.com/post/id/195215
拦截 SO 层函数
- 02. FRIDA-API使用篇:Java、Interceptor、NativePointer(Function/Callback) 使用方法及示例:https://www.anquanke.com/post/id/195869
03. Frida Java Hook 详解(安卓9):代码及示例(上):https://mp.weixin.qq.com/s/2BdX-rtAu8WZuzY3pK94NQ
FRIDA SCRIPT的"hello world"
"hello world"脚本代码示例
"hello world"脚本代码示例详解
Java层拦截普通方法
拦截普通方法脚本示例
执行拦截普通方法脚本示例
Java层拦截构造函数
拦截构造函数脚本代码示例
拦截构造函数脚本代码示例解详解
Java层拦截方法重载
拦截方法重载脚本代码示例
Java层拦截构造对象参数
拦截构造对象参数脚本示例
Java层修改成员变量的值以及函数的返回值
修改成员变量的值以及函数的返回值脚本代码示例
修改成员变量的值以及函数的返回值之小实战
04. Frida Java Hook 详解(安卓9):代码及示例(下):https://mp.weixin.qq.com/s/heK_r0zXo_6_RoA37yPtGQ
Java层拦截内部类函数
Java层枚举所有的类并定位类
Java层枚举类的所有方法并定位方法
Java层拦截方法的所有方法重载
Java层拦截类的所有方法
Java层拦截类的所有子类
RPC远程调用Java层函数
D. 实用 FRIDA 篇
01. 实用 FRIDA 进阶:内存漫游、hook anywhere、抓包:https://www.anquanke.com/post/id/197657
1 内存漫游
1.1 获取基本信息
1.2 提取内存信息
1.3 内存堆搜索与执行
1.4 启动activity或service
2 Frida hook anywhere
2.1 objection(内存漫游)
2.2 objection(hook)
2.3 ZenTracer(hook)
3 Frida用于抓包
3.1 推荐抓包环境
3.2 Http(s)多场景分析
3.3 SSL Pinning Bypass
3.4 Socket多场景分析
02. 实用 FRIDA 进阶:脱壳、自动化、实用问题集锦:https://www.anquanke.com/post/id/197670
1 Frida用于脱壳
1.1 文件头搜dex
1.2 DexClassLoader:objection
1.3 暴力搜内存:DEXDump
1.4 暴力搜内存:objection
2 Frida用于自动化
2.1 连接多台设备
2.2 互联互通
2.3 远程调用(RPC)
3 Frida更多技巧
3.1 必须上版本管理
3.2 反调试基本思路
3.3 非标准端口连接
3.4 打印byte[]``[B
3.5 hook管理子进程
3.6 hook混淆方法名
3.7 中文参数问题
3.8 hook主动注册
3.9 追踪JNI API
3.10 延迟hook
03. 实用 FRIDA 进阶:主动调用,密码克星
《FART系列文章》
源码系列
2020年安卓源码编译指南及FART脱壳机谷歌全设备镜像发布
:https://www.anquanke.com/post/id/199898
简介&&引言
2020年的AOSP源码编译指南
选择编译目标:安卓10
选择虚拟机编译
选择Kali Linux操作系统
选择清华源初始包
准备编译环境
开始动手编译
编译成功
FART自动脱壳机全设备镜像制作
加入FART代码
制作镜像刷机
FART 源码解析 及 编译镜像支持到 Pixel2(xl)
:https://www.anquanke.com/post/id/201896
镜像编译
源码解析
第一组件:脱壳
第二组件:转存函数体
第三组件:函数体填充
链接:https://pan.baidu.com/s/1zAYliYbkagdUUsykww_L4g 提取码:vv5u)
XPOSED 魔改一:获取特征
:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FART/xposed1.md
Kali Linux 虚拟机下载种子在 FART/文件夹中
OPPOSRC:来自高纬的对抗系列
- 来自高纬的对抗①:定制ART解释器脱所有一二代壳 (附件)
- 来自高纬的对抗②:魔改XPOSED过框架检测(上)
- 来自高纬的对抗③:魔改XPOSED过框架检测(下)(附件1、附件2)
- 来自高纬的对抗④:定制安卓内核过反调试(附件:链接:https://pan.baidu.com/s/1zAYliYbkagdUUsykww_L4g 提取码:vv5u])
- 来自高纬的对抗⑤:替换安卓内核并解封Linux命令和环境(附件)
进击的Coder:精品连载
- 安卓 App 逆向课程一之环境配置
- 精品连载丨安卓 App 逆向课程之二逆向神器 frida 的介绍
- 精品连载丨安卓 App 逆向课程之三 frida 注入 Okhttp 抓包上篇
- 精品连载丨安卓 App 逆向课程之四 frida 注入 Okhttp 抓包中篇
- 精品连载丨安卓 App 逆向课程之五 frida 注入 Okhttp 抓包下篇
《 FRIDA系列文章 》相关推荐
- 数据结构学习系列文章合集
数据结构学习系列文章目录 前言 1.稀疏数组和队列 稀疏数组和二位数组的转换 数组队列的实现 环形队列的介绍与实现 2.链表 单链表的增.删.改.查 总结 前言 学习数据结构记录,作为自己的笔记,同时 ...
- 积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引
[源码下载] 积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引 作者:webabcd Flash 之 ActionScript 3.0 1.积少成 ...
- Scott的ASP.net MVC框架系列文章之四:处理表单数据(2)
前几周我发表了一系列文章介绍我们正在研究的ASP.NET MVC框架.ASP.NET MVC框架为你提供了一种新的开发Web应用程序的途径,这种途径可以让应用程序变得更加层次清晰,而且更加有利于对代码 ...
- Enterprise Library系列文章回顾与总结
Enterprise Library系列文章回顾与总结 自Enterprise Library 1.1 推出以来,Terry写了一系列的关于Enterprise Library的文章,其中得到了很多朋 ...
- 系列文章|OKR与敏捷(三):赋予团队自主权
OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余.这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为 ...
- 系列文章|OKR与敏捷(二):实现全栈敏捷
OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余.这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为 ...
- C#网络编程系列文章索引
1. 网络协议简介 介绍了网络分层: 网络层 数据链路层 网络层 传输层 应用层 2. HTTP协议详解 介绍应用层的HTTP协议,是Asp.net开发人员必须掌握的协议 HTTP请求 HTTP响应 ...
- [推荐推荐][提供下载]ORACLE SQL:经典查询练手系列文章收尾(目录篇)
[推荐推荐][提供下载]ORACLE SQL: 经典查询练手系列文章收尾(目录篇) --通过知识共享树立个人品牌. 通过近一个月的努力,<经典查询练手系列>也快告一段落,但并不代表结束,以 ...
- 推荐介绍一项新的工程技术:[威胁建模]的相关系列文章《威胁建模Web 应用程序》...
以往我们建立和开发web应用,特别是要部署到Internet上的工程项目,都要多多少少考虑一些安全性问题,分析可能存在的漏洞,来决定如何有效防范攻击,但是很少有公司或个人将这种行为活动归结到项目的建模 ...
最新文章
- mysql存储过程number类型_MySQL存储过程的基本函数(三)
- 目前有量子计算机,中国“祖冲之”刚刚成为当前最强大的量子计算机
- linux 系统tar文件压缩打包命令
- 科技论文新在哪里?-如何写好科技论文之我见(三)
- Pycharm用鼠标滚轮控制字体大小
- Java加密与解密的艺术~RSA模型分析
- IDEA建立Spring MVC Hello World 详细入门教程
- ccf运行错误是什么原因_正压送风机运行中叶轮裂纹产生原因是什么?
- Linux命令----系统目录结构
- 旅游大数据:从投资决策到分析工作的常态化
- 【软考】2018年下半年软件设计师上午试题及答案
- leg引擎适合什么系统的服务器,第一讲 LEG引擎服务端更新BLUE引擎
- 计算机在环境工程专业中的应用,计算机在环境科学与工程方向的应用.pdf
- 10.24程序员节专辑——程序员最爱的数字,1024的秘密
- 【渝粤题库】陕西师范大学200031 中国现代文学 作业
- IEEE Transactions on Industrial Informatics(TII)投稿指导
- 阿里巴巴校招内推简历筛选方案
- 矩阵手册(六)—— Cauchy–Schwarz 不等式及其证明
- AAE结合resnet的生成器搭建(失败)
- JavaScript概述和HTML中嵌入JavaScript的三种方式