zoukankan      html  css  js  c++  java
  • frida使用技巧

    获取类中的成员变量/方法

    Java.perform(function(){
        var hook = Java.use("com.xxx.xxx");
        console.log("aa: ", hook)
        //获取成员变量
        //getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。 
        //getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
        //同样类似的还有getConstructors()和getDeclaredConstructors()、getMethods()和getDeclaredMethods(),这两者分别表示获取某个类的方法、构造函数
        var members = hook.class.getDeclaredFields();
        members.forEach(function(member) {
            // 
            console.log("member: ", member);
        });  
    })

    java层打印调用堆栈

    console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()));

    java.use(com.xxx.xxx)

    Java.perform(function(){
        targetClass = "com.xxx.xxx"
        try {
            // 先用 java.use 如果找不到 在枚举classload
            Java.use(targetClass);
        } catch (error) {
            Java.enumerateClassLoaders({
                onMatch: function (loader) {
                    try {
                        if (loader.findClass(targetClass)) {
                            console.log("loader find: " + loader);
                            Java.classFactory.loader = loader;
                        }
                    } catch (error) {
                        //console.log("classloader failed" + error);
                    }
                }, onComplete: function () {
    
                }
            });
        }
        var hook = Java.use(targetClass);
    })

    frida 通过wifiadb实现群控

    import frida
    import os
    import time
    
    app = "com.xxx.xxx";
    
    deviceIds = [];
    devices = frida.enumerate_devices();
    for device in devices :
        # print(device)
        ## 枚举所有通过wifiadb 连的机器
        if device.id.find(":") > 0:
            #print(device.id)
            deviceIds.append(device.id.replace("5555", "9999"))
    
    for id in deviceIds :
        print(id)
        device = frida.get_device_manager().add_remote_device(id)
        print(device)
        pid = device.spawn([app])
        print(pid)
        device.resume(pid)
        time.sleep(1)
        session = device.attach(pid)
        with open("load_hook.js") as f:
            script = session.create_script(f.read())
            script.load()
    input()
  • 相关阅读:
    硬件重定向
    ARM处理器模式切换(含MRS,MSR指令)
    ARM处理器工作模式
    ARM处理器异常处理
    JS和H5做一个音乐播放器,附带源码
    php页面zend加密乱码的解决办法
    ZendOptimizer怎么安装?Php网站打开显示乱码
    PHP和Python如何选择?或许可以考虑这三个问题
    SQL Server 2008读书笔记(3):表
    Dijkstra算法
  • 原文地址:https://www.cnblogs.com/Snark/p/12761561.html
Copyright © 2011-2022 走看看