Frida學習01-腳本入門


Frida學習01-腳本入門

書籍:安卓Frida逆向與抓包實戰-陳佳林

作者:狐狸大劍眼鏡

Feb-22.2022

Frida腳本入門

這里做個記錄,kali上固定使用的版本是14.2.13,因為kali 的python我用pyenv死活切換不了,

掀桌o( ̄▽ ̄)ブ

在Android逆向過程中,Frida存在兩種操作模式:一種是通過命
令行直接將JavaScript腳本注入進程中,對進程進行操作,稱為
CLI(命令行)模式;另一種是使用Python進行JavaScript腳本的注
入工作,實際對進程進行操作的還是JavaScript腳本,這種操作模式稱
為RPC模式。兩種模式本質上是一樣的,最終執行Hook工作的都是
JavaScript腳本,而且核心執行注入工作的還是Frida本身,只是RPC
模式在對復雜數據的處理上可以通過RPC傳輸給Python腳本來進行,
這樣有利於減少被注入進程的性能損耗,在大規模調用中更加普遍。

IDE配置

vscode

安裝nodejs

http://nodejs.cn/

可以使用阿里的國內鏡像進行加速。
npm config set registry https://registry.npm.taobao.org

https://npmmirror.com/

使用定制的 cnpm (gzip 壓縮支持) 命令行工具代替默認的 npm:
npm install -g cnpm --registry=https://registry.npmmirror.com

安裝模塊

$ cnpm install [name]

使用git下載frida-agent-example倉庫並配置

git clone https://github.com/oleavr/frida-agent-example.git

cd到目錄運行

cnpm install

然后使用vscode打開此工程,在其子目錄編寫程序就有代碼提示了

// 這是我第一個frida hook腳本
setTimeout(
    function () { //匿名函數
    Java.perform(function () {
        console.log("Hello world!")
    })
})

從外層向里看,首先我們把一個匿名函數作為
參數傳給了setTimeout()函數,在這個匿名函數體中調用了Frida的
API函數Java.perform(),這個API函數本身又接受了一個匿名函數作
為參數,該匿名函數最終調用console.log()函數來打印一個"Hello
world!"字符串。這里需要調用setTimeout()方法是因為該方法將函數
注冊到JavaScript運行庫中,然后在JavaScript運行庫中調用
Java.perform()方法將函數注冊到App的Java運行庫中並在其中執行
該函數(本范例打印輸出了一條log)。

運行第一個程序

現在手機上運行frider-server

可是使用frida-ps -U 查看手機進程

android.process.media代表的是Android系統手機系統的媒體存儲

我們在這個進程上注入以attach方式注入我們的程序

frida -U -l helloworld.js android.process.media

打印出hello world!了,好了frida學習完畢嘿嘿,

開個玩笑( •̀ ω •́ )✧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM