frida遠程注入 frida遠程連接手機 frida -H


大家使用frida 進行hook的時候大部分時候是用usb數據線去連接。
可是總是有一些比較坑爹的時候 比如設備根本不能連接數據線 比如一些iot設備 或者 數據線連接時斷時續比較感人,這個時候就可以用到frida 遠程連接了

大家好,我是王鐵頭 一個乙方安全公司搬磚的菜雞
持續更新移動安全,iot安全,編譯原理相關原創視頻文章
視頻演示:https://space.bilibili.com/430241559

主要使用場景:

  1. usb無法使用
  2. usb連接不穩定
  3. usb同時hook多個設備

使用依賴

  1. pc和遠程設備要安裝frida環境
  2. 處在同一局域網環境下 (非局域網我自己沒測試 測試了我再來改)
  3. 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遠程連接手機

注入腳本

//注入腳本的命令
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);
    }
});

執行結果:
frida局域網連接手機

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
frida遠程
執行遠程注入腳本:
image.png
成功執行

持續更新移動安全,iot安全,編譯原理相關原創視頻文章
視頻演示:[https://space.bilibili.com/430241559]

相關代碼資料下載 關注公眾號 [移動安全王鐵頭] 回復關鍵字 frida
持續更新移動安全,iot安全,編譯原理相關原創視頻文章


免責聲明!

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



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