• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
最美不过夕阳红
博客园    首页    新随笔    联系   管理    订阅  订阅
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()

 

posted on 2020-04-23 16:11  Snark  阅读(3200)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3