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

歡迎訪問 生活随笔!

生活随笔

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

Android

安装使用Frida在Android上进行hook

發布時間:2024/4/15 Android 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安装使用Frida在Android上进行hook 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

我們對Android應用進行hook最常用的就是Xposed,它相對來說更加完善,而且有強大的社區和豐富的插件。而Frida則于Xposed不同,它是一款輕量級的Hook框架,可用于多平臺,相同的是它依然需要root環境。本文就以Android為例來詳細說說如何安裝并使用它。

PC端

首選要在電腦上安裝Frida,官方的安裝步驟是

pip install frida-tools # CLI tools pip install frida # Python bindings npm install frida # Node.js bindings

很簡單,但是在安裝時回遇到很多問題,下面一一說一下

mac

在mac上安裝失敗,報錯如下:

“python setup.py egg_info” failed with error code 1 in /private/tmp/pip-req-build-6pqu9pg1/

仔細觀察安裝的信息,發現其中有一條說需要/Users/bennu/frida-12.0.3-py3.6-macosx-10.6-intel.egg

這應該是墻的問題,導致必要的文件沒有下載下來,到阿里的鏡像庫中下載對應文件:

http://mirrors.aliyun.com/pypi/simple/frida/

然后放到/Users/bennu/下,然后在運行:

pip install frida pip install frida-tools

即可。

注意如果無法使用frida命令,則一定是frida-tools沒有安裝成功

windows

有了mac上的經驗,我們在windows上安裝前就可以先為pip設置阿里鏡像。步驟如下:

(1):在windows文件管理器中,輸入%APPDATA%

(2):會定位到一個新的目錄下,在該目錄下新建pip文件夾,然后到pip文件夾里面去新建個pip.ini文件

(3):在新建的pip.ini文件中輸入以下內容

[global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host = mirrors.aliyun.com

然后再進行安裝即可。

我在安裝過程中使用pip install命令報錯

Fatal error in launcher: Unable to create process using ‘"’

使用python -m pip install xxx代替即可,如:

python -m pip install frida-tools python -m pip install frida

檢查

安裝成功后使用frida --version查看是否安裝成功

如果報錯

ImportError: DLL load failed: 找不到指定的模塊

說明python的版本不對,卸載frida等,卸載python安裝正確的python版本。

可以根據http://mirrors.aliyun.com/pypi/simple/frida/ 這里來判斷版本.

重新安裝python后在重新安裝frida即可。

Android端

手機上需要下載安裝frida-service,并啟動起來。

下載

首先下載frida-service

https://github.com/frida/frida/releases

注意要與安裝的frida版本一致,同時注意android是32為還是64位,如frida-server-12.0.3-android-arm64.xz

如何查看cpu是32位還64位?

在adb shell中用命令getprop ro.product.cpu.abi獲取設備cpu信息

安裝啟動

下載完成后解壓,將名字改為frida,使用adb放入手機中

$ adb push /Users/bennu/Downloads/frida /data/local/tmp

然后啟動frida-service,步驟如下:

$ adb shell //進入手機終端 #cd /data/local/tmp # su # ps | grep 'frida' //查看服務是否啟動 root 4743 1 52064 15456 poll_sched b5eaaa5c S ./frida-11.0.13 # ./frida & //啟動服務

如果想停止frida服務,則

# kill -s 9 4743 //殺死服務(4743是進程id)

Hook

啟動服務后就可以通過frida hook了,命令如下:

$ frida -U -l /Users/bennu/xxx.js com.xxx.xxx

其中xxx.js是我們注入的腳本,com.xxx.xxx是要hook的程序的包名。

可以看到Frida注入腳本是js的,這是與Xposed不同的,腳本示例如下:

Java.perform(function () {var Activity = Java.use("android.app.Activity");//如果沒有同名函數,hook這個函數Activity.onResume.implementation = function () {send("activity: "+ this + ", onResume!!!");this.onResume();};//如果有同名函數,需要用overload和所有參數類型來確定到底是哪個函數Activity.startActivity.overload('android.content.Intent').implementation = function(intent){send("activity: "+ this + ", startActivity!!!");this.startActivity(intent);};Activity.startActivity.overload('android.content.Intent', 'android.os.Bundle').implementation = function(intent, bundle){send("activity: "+ this + ", startActivity!!!");this.startActivity(intent, bundle);};//hook構造函數var aa = Java.use("com.tencent.mm.plugin.chatroom.d.n");aa.$init.implementation = function (str, str1){send("n:" + str + "," + str1);this.$init(str, str1)} });

示例中是hook了activity的onResume等方法,這樣當hook的應用執行這些方法時就會觸發,示例中是打印一條記錄。

可以看到Frida在腳本編寫上比Xposed簡單了很多,也不需要創建一個項目,所以它更輕量更快捷。

語法

最后整理一些比較常用的語法

總結

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

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