日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Hook之Frida安装使用

發(fā)布時間:2024/1/18 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Hook之Frida安装使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

      • 安裝Frida
      • 安裝frida-server
      • frida-server配置和啟動
      • Frida Hook
        • 實例1:
        • 實例2:
      • Frida 常用命令

Frida 是一個動態(tài)檢測框架,允許開發(fā)人員在 Windows、macOS、Linux、iOS 和 Android 上的原生應用程序中注入 JavaScript 或 Python 腳本。該框架可用于操縱應用程序的行為、從中提取信息或與其進行通信。Frida 通常被安全研究人員和滲透測試人員用來對應用程序進行動態(tài)分析,并執(zhí)行鉤子函數調用、跟蹤函數調用和反向代碼等任務。對于移動應用開發(fā)人員來說,它也很有用,可以用來進行測試或自動化等任務。

使用Frida需要Python 3環(huán)境,python環(huán)境請大家自行下載安裝。我使用的是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-server

frida-server配置和啟動

進入adb shell環(huán)境

.\nox_adb.exe shell

賦予frida-server權限

chmod 777 frida-server

啟動運行

./frida-server

開啟端口轉發(fā)

.\nox_adb.exe forward tcp:27043 tcp:27043 .\nox_adb.exe forward tcp:27042 tcp:27042#我用的是模擬器,如果是真機且adb配的有環(huán)境變量,用下面的命令 adb.exe forward tcp:27043 tcp:27043 adb.exe forward tcp:27042 tcp:27042

重新打開一個cmd窗口運行frida-ps -U,查看是否正常運行。注意需要在有python環(huán)境的cmd窗口運行。

#列出設備上正在運行的進程frida-ps -U

顯示已下信息說明運行正常

Frida Hook

通過frida-ps -Ua 命令可以查看到所有打開app的包名
這時候就可以試下frida-trace了,比如想看下微信會打開哪些文件,那么執(zhí)行命令:

frida-trace -U -f com.tencent.mm -i open

實例1:

下面是一個使用 Frida hook Android 應用程序中的方法的實際例子:
假設我們有一個名為 “com.example.app” 的應用程序,其中有一個類 “com.example.app.Secret”,其中有一個名為 “getSecret” 的方法。這個方法會返回一個字符串,我們想要hook它并在每次調用時打印它的返回值。

  • 在目標設備上運行 Frida Server。
  • adb push frida-server /data/local/tmp/ adb shell "chmod 755 /data/local/tmp/frida-server" adb shell "/data/local/tmp/frida-server &"
  • 我們在 hook.js文件里面編寫鉤子的腳本
  • Java.perform(function () {var Secret = Java.use("com.example.app.Secret");var secret = Secret.getSecret.implementation = function () {console.log("getSecret() called");var ret_value = this.getSecret();console.log("getSecret() returned: " + ret_value);return ret_value;}; });
  • 在本地電腦上,我們可以使用 Frida 來附加到目標進程。
  • frida -U -f com.example.app -l hook.js

    -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" 為應用程序的包名, 上述代碼將在應用程序的 “l(fā)ibc.so” 中鉤住 “puts” 函數,并在回調中打印出信息。
    這里,我們使用 frida python API hook應用程序。
    frida.get_usb_device().attach('com.example.app')連接到指定包名的應用程序進程。 然后使用script.load()加載 JavaScript 代碼并開始監(jiān)聽事件。
    這只是一個簡單的示例,實際使用中需要根據具體場景來修改代碼。

    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 原創(chuàng),首發(fā)于 CSDN博客🙉
    • 📢停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?

    總結

    以上是生活随笔為你收集整理的Android Hook之Frida安装使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。