《 FRIDA系列文章 》
轉(zhuǎn)載:《FRIDA系列文章》github 地址:https://github.com/r0ysue/AndroidSecurityStudy
由 Frida 提供的很棒的 項目、庫和工具的精選列表:https://github.com/dweinstein/awesome-frida
《Frida操作手冊》:https://github.com/hookmaster/frida-all-in-one
A. 環(huán)境準備 和 入門篇
01.Android環(huán)境準備:谷歌原版鏡像8.1、TWRP、Magisk root
:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/A01/README.md???????
02.一篇文章帶你領(lǐng)悟frida的精髓(基于安卓8.1)
:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/A02/README.md
frida 是啥?
frida 為什么這么火?
frida 實操環(huán)境
基本能力Ⅰ:hook參數(shù)、修改結(jié)果
基本能力Ⅱ:參數(shù)構(gòu)造、方法重載、隱藏函數(shù)的處理
中級能力:遠程調(diào)用
高級能力:互聯(lián)互通、動態(tài)修改
B. FRIDA 腳本篇
枚舉所有的類、定位目標類并打印類的實例、枚舉所有方法并定位方法
- 01. FRIDA腳本系列(一)入門篇:在安卓8.1上dump藍牙接口和實例:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/B01/README.md
hook 方法的所有重載、類的所有方法、類的所有子類、本地庫的導出函數(shù)
- ??????02.FRIDA腳本系列(二)成長篇:動靜態(tài)結(jié)合逆向WhatsApp:https://github.com/r0ysue/AndroidSecurityStudy/blob/master/FRIDA/B02/README.md
- 03.FRIDA腳本系列(三)超神篇:百度AI“調(diào)教”抖音AI
- 04.FRIDA腳本系列(四)更新篇:幾個主要機制的大更新
C. FRIDA API 篇
frida 變量類型 (?Data Types, Function and Callback )
:https://frida.re/docs/javascript-api/
| 1 | new Int64(v) | 定義一個有符號Int64類型的變量值為v,參數(shù)v可以是字符串或者以0x開頭的的十六進制值 |
| 2 | new UInt64(v) | 定義一個無符號Int64類型的變量值為v,參數(shù)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'):0xec644071frida?也為?Int64(v)?提供了一些相關(guān)的 API:
| 1 | add(rhs)、sub(rhs)、and(rhs)、or(rhs)、xor(rhs) | 加、減、邏輯運算 |
| 2 | shr(N)、shl(n) | 向右/向左移位n位生成新的Int64 |
| 3 | Compare(Rhs) | 返回整數(shù)比較結(jié)果 |
| 4 | toNumber() | 轉(zhuǎn)換為數(shù)字 |
| 5 | toString([radix=10]) | 轉(zhuǎn)換為可選基數(shù)的字符串(默認為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));//轉(zhuǎn)stringconsole.log("8888 toString:"+new Int64("8888").toString());}); }攔截 java 層函數(shù)
- 01. FRIDA-API使用篇:FRIDA輸出打印、frida變量類型、rpc、Process、Module、Memory 使用方法及示例:https://www.anquanke.com/post/id/195215
攔截 SO 層函數(shù)
- 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層攔截普通方法
? ? ? ? 攔截普通方法腳本示例
? ? ? ? 執(zhí)行攔截普通方法腳本示例
Java層攔截構(gòu)造函數(shù)
? ? ? ? 攔截構(gòu)造函數(shù)腳本代碼示例
? ? ? ? 攔截構(gòu)造函數(shù)腳本代碼示例解詳解
Java層攔截方法重載
? ? ? ? 攔截方法重載腳本代碼示例
Java層攔截構(gòu)造對象參數(shù)
? ? ? ? 攔截構(gòu)造對象參數(shù)腳本示例
Java層修改成員變量的值以及函數(shù)的返回值
? ? ? ? 修改成員變量的值以及函數(shù)的返回值腳本代碼示例
? ? ? ? 修改成員變量的值以及函數(shù)的返回值之小實戰(zhàn)
04. Frida Java Hook 詳解(安卓9):代碼及示例(下):https://mp.weixin.qq.com/s/heK_r0zXo_6_RoA37yPtGQ
Java層攔截內(nèi)部類函數(shù)
Java層枚舉所有的類并定位類
Java層枚舉類的所有方法并定位方法
Java層攔截方法的所有方法重載
Java層攔截類的所有方法
Java層攔截類的所有子類
RPC遠程調(diào)用Java層函數(shù)
D. 實用 FRIDA 篇
01. 實用 FRIDA 進階:內(nèi)存漫游、hook anywhere、抓包:https://www.anquanke.com/post/id/197657
1 內(nèi)存漫游
? ? ? ? 1.1 獲取基本信息
? ? ? ? 1.2 提取內(nèi)存信息
? ? ? ? 1.3 內(nèi)存堆搜索與執(zhí)行
? ? ? ? 1.4 啟動activity或service
2 Frida hook anywhere
? ? ? ? 2.1 objection(內(nèi)存漫游)
? ? ? ? 2.2 objection(hook)
? ? ? ? 2.3 ZenTracer(hook)
3 Frida用于抓包
? ? ? ? 3.1 推薦抓包環(huán)境
? ? ? ? 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 暴力搜內(nèi)存:DEXDump
? ? ? ? 1.4 暴力搜內(nèi)存:objection
2 Frida用于自動化
? ? ? ? 2.1 連接多臺設(shè)備
? ? ? ? 2.2 互聯(lián)互通
? ? ? ? 2.3 遠程調(diào)用(RPC)
3 Frida更多技巧
? ? ? ? 3.1 必須上版本管理
? ? ? ? 3.2 反調(diào)試基本思路
? ? ? ? 3.3 非標準端口連接
? ? ? ? 3.4 打印byte[]``[B
? ? ? ? 3.5 hook管理子進程
? ? ? ? 3.6 hook混淆方法名
? ? ? ? 3.7 中文參數(shù)問題
? ? ? ? 3.8 hook主動注冊
? ? ? ? 3.9 追蹤JNI API
? ? ? ? 3.10 延遲hook
03. 實用 FRIDA 進階:主動調(diào)用,密碼克星
《FART系列文章》
源碼系列
2020年安卓源碼編譯指南及FART脫殼機谷歌全設(shè)備鏡像發(fā)布
:https://www.anquanke.com/post/id/199898
簡介&&引言
? ? ? ? 2020年的AOSP源碼編譯指南
? ? ? ? 選擇編譯目標:安卓10
? ? ? ? 選擇虛擬機編譯
? ? ? ? 選擇Kali Linux操作系統(tǒng)
? ? ? ? 選擇清華源初始包
? ? ? ? 準備編譯環(huán)境
? ? ? ? 開始動手編譯
? ? ? ? 編譯成功
FART自動脫殼機全設(shè)備鏡像制作
? ? ? ? 加入FART代碼
? ? ? ? 制作鏡像刷機
FART 源碼解析 及 編譯鏡像支持到 Pixel2(xl)
:https://www.anquanke.com/post/id/201896
鏡像編譯
源碼解析
? ? ? ? 第一組件:脫殼
? ? ? ? 第二組件:轉(zhuǎn)存函數(shù)體
? ? ? ? 第三組件:函數(shù)體填充
?鏈接: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)
- 來自高緯的對抗④:定制安卓內(nèi)核過反調(diào)試(附件:鏈接:https://pan.baidu.com/s/1zAYliYbkagdUUsykww_L4g?提取碼:vv5u])
- 來自高緯的對抗⑤:替換安卓內(nèi)核并解封Linux命令和環(huán)境(附件)
進擊的Coder:精品連載
- 安卓 App 逆向課程一之環(huán)境配置
- 精品連載丨安卓 App 逆向課程之二逆向神器 frida 的介紹
- 精品連載丨安卓 App 逆向課程之三 frida 注入 Okhttp 抓包上篇
- 精品連載丨安卓 App 逆向課程之四 frida 注入 Okhttp 抓包中篇
- 精品連載丨安卓 App 逆向課程之五 frida 注入 Okhttp 抓包下篇
總結(jié)
以上是生活随笔為你收集整理的《 FRIDA系列文章 》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在一个二维数组中(每个一维数组的长度相同
- 下一篇: 王爽 汇编语言第三版 第9章 转移指令的