大家使用frida 進行hook的時候大部分時候是用usb數據線去連接。
可是總是有一些比較坑爹的時候 比如設備根本不能連接數據線 比如一些iot設備 或者 數據線連接時斷時續比較感人,這個時候就可以用到frida 遠程連接了
大家好,我是王鐵頭 一個乙方安全公司搬磚的菜雞
持續更新移動安全,iot安全,編譯原理相關原創視頻文章
視頻演示:https://space.bilibili.com/430241559
主要使用場景:
- usb無法使用
- usb連接不穩定
- usb同時hook多個設備
使用依賴
- pc和遠程設備要安裝frida環境
- 處在同一局域網環境下 (非局域網我自己沒測試 測試了我再來改)
- frida_server要以root權限執行
frida遠程連接的兩種方式
1. 命令行遠程連接:
1) 遠程設備端啟動 frida_server
這里端口可以加參數去修改 如果不加參數默認是 27042
//這里的 6666端口可以自定義 不加的話是 27042
riva:/data/local/tmp # ./fs_1413_a64 -l 0.0.0.0:6666
2) pc端執行 frida -H 主機IP:端口
這里演示一下 查看進程 和 注入腳本的命令
查看進程
//查看進程的命令
frida-ps -H 192.168.2.102:6666
注入腳本
//注入腳本的命令
frida -H 192.168.2.102:6666 -f com.wangtietou.test_activity -l C:\\Users\\wangtietou\\Desktop\\hook_activity.js --no-pause
這里的腳本很簡單 就是在主界面加載的時候 打印一行日志
====> on create
腳本代碼:
var str_name_class = "com.wangtietou.test_activity.MainActivity";
Java.perform(function()
{
var obj = Java.use(str_name_class);
obj.onCreate.implementation = function (arg)
{
console.log('====> on create');
return this.onCreate(arg);
}
});
執行結果:
bingo 成功執行
2. python腳本遠程連接
這里除了命令行直接執行js腳本 大家還經常使用 Python腳本使用frida
這里的腳本是hook Test類的 t1方法 當調用t1方法的時候 會打印一行日志:
====> t1
1) usb連接時候的 python腳本的注入代碼
import frida
import sys
rdev = frida.get_usb_device()
session = rdev.attach("com.wangtietou.test_activity") #要hook的程序包名
scr = """
var str_name_class = "com.wangtietou.test_activity.Test";
Java.perform(function()
{
var obj = Java.use(str_name_class);
obj.t1.implementation = function ()
{
console.log('====> t1');
return this.t1();
}
});
"""
script = session.create_script(scr)
def on_message(message ,data):
print (message)
script.on("message" , on_message)
script.load()
sys.stdin.read()
2) 無線連接時候的 python腳本的注入代碼
import frida
import sys
str_host = '192.168.2.102:6666'
manager = frida.get_device_manager()
remote_device = manager.add_remote_device(str_host)
session = remote_device.attach("com.wangtietou.test_activity")
scr = """
var str_name_class = "com.wangtietou.test_activity.Test";
Java.perform(function()
{
var obj = Java.use(str_name_class);
obj.t1.implementation = function ()
{
console.log('====> t1');
return this.t1();
}
});
"""
script = session.create_script(scr)
def on_message(message ,data):
print (message)
script.on("message" , on_message)
script.load()
sys.stdin.read()
這兩個腳本大部分代碼都是相同的 不同點在於連接設備的代碼部分
連接usb的設備代碼
rdev = frida.get_usb_device()
session = rdev.attach("com.wangtietou.test_activity")
連接遠程設備的代碼
str_host = '192.168.2.102:6666'
manager = frida.get_device_manager()
remote_device = manager.add_remote_device(str_host)
session = remote_device.attach("com.wangtietou.test_activity")
這里執行注入的python腳本
先啟動設備端的frida_server
執行遠程注入腳本:
成功執行
持續更新移動安全,iot安全,編譯原理相關原創視頻文章
視頻演示:[https://space.bilibili.com/430241559]
相關代碼資料下載 關注公眾號 [移動安全王鐵頭] 回復關鍵字 frida
持續更新移動安全,iot安全,編譯原理相關原創視頻文章