Android Hook之Frida安装使用
目錄
- 安裝Frida
- 安裝frida-server
- frida-server配置和啟動
- Frida Hook
- 實例1:
- 實例2:
- Frida 常用命令
Frida 是一個動態檢測框架,允許開發人員在 Windows、macOS、Linux、iOS 和 Android 上的原生應用程序中注入 JavaScript 或 Python 腳本。該框架可用于操縱應用程序的行為、從中提取信息或與其進行通信。Frida 通常被安全研究人員和滲透測試人員用來對應用程序進行動態分析,并執行鉤子函數調用、跟蹤函數調用和反向代碼等任務。對于移動應用開發人員來說,它也很有用,可以用來進行測試或自動化等任務。
使用Frida需要Python 3環境,python環境請大家自行下載安裝。我使用的是python3.7版本。
安裝Frida
pip install frida -i https://pypi.mirrors.ustc.edu.cn/simple/ pip install frida-tools -i https://pypi.mirrors.ustc.edu.cn/simple/#查看frida版本 frida --version安裝frida-server
安裝frida-server前需要先通過adb連接設備,然后進入虛擬機查看模擬器cpu類型
.\nox_adb.exe shell getprop ro.product.cpu.abi
我的是x86,選擇x86的frida-server安裝包frida-server-16.0.8-android-x86_64.xz。frida-server版本要和上面安裝的frida版本對應。
frida-server下載地址:https://github.com/frida/frida/releases
下載后解壓文件,然后推送到模擬器上的/data/local/tmp目錄
.\nox_adb.exe push frida-server-16.0.8-android-x86 /data/local/tmp/frida-serverfrida-server配置和啟動
進入adb shell環境
.\nox_adb.exe shell賦予frida-server權限
chmod 777 frida-server啟動運行
./frida-server開啟端口轉發
.\nox_adb.exe forward tcp:27043 tcp:27043 .\nox_adb.exe forward tcp:27042 tcp:27042#我用的是模擬器,如果是真機且adb配的有環境變量,用下面的命令 adb.exe forward tcp:27043 tcp:27043 adb.exe forward tcp:27042 tcp:27042重新打開一個cmd窗口運行frida-ps -U,查看是否正常運行。注意需要在有python環境的cmd窗口運行。
#列出設備上正在運行的進程frida-ps -U顯示已下信息說明運行正常
Frida Hook
通過frida-ps -Ua 命令可以查看到所有打開app的包名
這時候就可以試下frida-trace了,比如想看下微信會打開哪些文件,那么執行命令:
實例1:
下面是一個使用 Frida hook Android 應用程序中的方法的實際例子:
假設我們有一個名為 “com.example.app” 的應用程序,其中有一個類 “com.example.app.Secret”,其中有一個名為 “getSecret” 的方法。這個方法會返回一個字符串,我們想要hook它并在每次調用時打印它的返回值。
-U 參數表示附加到 USB 設備上的應用程序
-f 參數表示目標進程的包名
-l 參數表示包含 Frida 腳本的文件路徑
接著,我們在 hook.js文件里面編寫鉤子的腳本
最后,在目標應用程序上進行一些操作,并在 Frida 控制臺上查看結果,看看鉤子是否正常工作。
如果一切順利,你就可以看到鉤子成功地輸出了一些信息。
實例2:
使用python腳本來使用frida hook應用程序的例子:
import frida import sysdef on_message(message, data):if message['type'] == 'send':print("[*] {0}".format(message['payload']))else:print(message)jscode = """ Interceptor.attach(Module.findExportByName("libc.so", "puts"), {onEnter: function(args) {send(Memory.readCString(args[0]));} }); """process = frida.get_usb_device().attach('com.example.app') script = process.create_script(jscode) script.on('message', on_message) script.load() sys.stdin.read()其中"com.example.app" 為應用程序的包名, 上述代碼將在應用程序的 “libc.so” 中鉤住 “puts” 函數,并在回調中打印出信息。
這里,我們使用 frida python API hook應用程序。
frida.get_usb_device().attach('com.example.app')連接到指定包名的應用程序進程。 然后使用script.load()加載 JavaScript 代碼并開始監聽事件。
這只是一個簡單的示例,實際使用中需要根據具體場景來修改代碼。
Frida 常用命令
- frida --version - 顯示當前 Frida 的版本。
- frida-ps -U - 顯示當前正在運行的 USB 設備上的進程列表。
- frida-ps -Uai - 列出安裝的程序
- frida-ps -Ua - 列出運行中的程序(查看包名很方便)
- frida-ps - 顯示當前正在運行的進程列表。
- frida -U -l script.js -f package.name - 通過 USB 連接到設備并在 package.name 應用程序上運行 script.js 腳本。
- frida-trace -i function_name -U package.name - 在 package.name 應用程序上跟蹤函數 function_name 的調用。
- frida-discover -U - 在 USB 連接的設備上掃描可鉤住的函數。
- frida -U -f package.name --no-pause - 運行 package.name 應用程序并在啟動時附加到它,不暫停它。
- frida-ls-devices - 顯示可用的 Frida 設備。
- frida-kill -U - 結束與 USB 設備上的 Frida 相關進程。
- frida-trace -U -i "*libc.so*" package.name - 在 package.name 應用程序上跟蹤所有 libc.so 中的函數調用。
- frida -U -l script.js -f package.name -n libexample.so - 在 package.name 應用程序上的 libexample.so 中運行 script.js 腳本。
- frida-trace -U -I "*sqlite3*" package.name - 在 package.name 應用程序上跟蹤所有包含“sqlite3”的函數調用.
- 📢博客主頁:https://blog.csdn.net/qq233325332
- 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 陌北V1 原創,首發于 CSDN博客🙉
- 📢停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?
總結
以上是生活随笔為你收集整理的Android Hook之Frida安装使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 震波
- 下一篇: 智慧电厂:打破电厂传统思路