阅读 124

frida 远程连接手机 frida局域网连接 远程注入

大家使用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

作者:移动安全王铁头

原文链接:https://www.jianshu.com/p/ed5ff5e9b952

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐