• 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安全,编译原理相关原创视频文章

  • 相关阅读:
    安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程
    android4.0浏览器在eclipse中编译的步骤
    android.net.wifi的简单使用方法
    android:sharedUserId 获取系统权限
    android 常见死机问题--log分析
    android anr分析方法
    android的logcat详细用法
    Android 设计模式 之 观察者模式
    Android 设计模式 之 单例模式
    android 自定义控件 使用declare-styleable进行配置属性(源码角度)
  • 原文地址:https://www.cnblogs.com/shlyd/p/14390925.html
Copyright © 2020-2023  润新知