(frida小记) 03 修改类成员及枚举所有类和类的方法

修改类成员

修改静态static的类成员(类被初始化时就创建了)
修改非静态的类成员(类被实例化时才创建),当出现同名的name参数和name方法时,要修改参数name时要写成_name!!!

//hook类成员字段
function hooktest8(){
    Java.perform(function(){
        //对于静态字段static
        var myuser=Java.use("com.alex.javahooktarget.MyUser");
        myuser.flag.value="hell yeah!";
        send(myuser.flag.value);
        console.log(JSON.stringify(myuser.flag.value));

        //对于非静态字段
        Java.choose("com.alex.javahooktarget.MyUser",{
            onMatch:function(obj){
                obj.trueName.value="hahaha";
            },
            onComplete:function(){

            }
        });
    })
}

枚举所有类和类的方法

异步的方法

function hookTest7(){
    Java.perform(function(){
        Java.enumerateLoadedClasses({
                onMatch:function(name,handler){
                    if(name.indexOf("com.alexw.app")!=-1){
                        console.log(name);
                        var clazz=Java.use(name);
                        console.log(clazz);
                        var methods=clazz.class.getDeclaredMethods();
                        for(var i=0;i<methods.length;i++){
                            console.log(methods[i]);
                        }
                    }
                },
                onComplete:function(){

                }
           }
        });
    });
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要查看APK中的所有方法,您可以使用Frida提供的frida-repl工具。frida-repl工具是一个交互式的JavaScript控制台,您可以使用它来探索和操作运行中的应用程序。 以下是在frida-repl中查看APK中的所有方法的步骤: 1. 启动frida-server 在您的测试设备或模拟器上启动frida-server。您可以从Frida官方网站下载适用于您的设备的frida-server二进制文件,并将其推送到设备上。然后,使用以下命令在设备上启动frida-server: ``` $ ./frida-server ``` 或者,您可以使用以下命令从计算机上启动frida-server并将其连接到设备: ``` $ frida --device <device_id> --no-pause ``` 2. 启动frida-repl 在计算机上打开终端窗口,并使用以下命令启动frida-repl工具: ``` $ frida-repl ``` 然后,使用以下命令连接到您要分析的APK: ``` > rpc.connect('tcp:<device_ip_addr>:<device_port>') ``` 请将“<device_ip_addr>”替换为您设备的IP地址,将“<device_port>”替换为您在设备上启动frida-server时使用的端口号。 3. 查看所有frida-repl中,使用以下命令列出APK中的所有: ``` > Java.enumerateLoadedClassesSync().forEach(function(className) { console.log(className); }); ``` 该命令将输出APK中的所有名。 4. 查看的所有方法 要查看特定的所有方法,请使用以下命令: ``` > Java.use('<class_name>').__methods__.forEach(function(method) { console.log(method); }); ``` 请将“<class_name>”替换为您要查看其方法名。该命令将输出该的所有方法名。 希望这些信息对您有所帮助。如果您有其他问题,请随时提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值