app逆向-frida hook 某个java类下的所有方法

本文介绍了如何使用Frida库在Android应用中进行代码注入,实现对特定类方法的Hook,捕获堆栈信息和参数,用于调试和性能分析。
摘要由CSDN通过智能技术生成
import frida
import sys


hook_class ="""
Java.perform(function(){
    hookclass('com.xbiao.login.PhoneLoginActivity')
})

function printstack() {
    console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()))
}

function hookclass(className){
    var Myclasa = Java.use(className)
    //得到类下的所有方法
    var methods = Myclasa.class.getDeclaredMethods()
    //遍历所有方法
    methods.forEach(function(method){
        //获得方法名
        var methodName = method.getName()
        //获得该方法得所有重载
        var overloads = Myclasa[methodName].overloads
        //遍历重载
        overloads.forEach(function(overload){
            //hook 重载
            
            var prot = '('
            for (var i=0; i<overload.argumentTypes.length; i++){
                prot += overload.argumentTypes[i].className + ','
            }
            prot += ')'
            var wMethodName = className+'.'+methodName+prot

            overload.implementation = function(){
                printstack()
                console.log(wMethodName)
                for (var i=0; i<arguments.length;i++){
                    console.log('argument:'+JSON.stringify(arguments[i]))
                }
                var ret = this[methodName].apply(this, arguments)
                console.log(wMethodName + 'return:'+JSON.stringify(ret))
                return ret
            }
        })
    })
}
"""
process = frida.get_usb_device(-1).attach("com.xxxxx")
script= process.create_script(hook_class)
script.load()
sys.stdin.read()
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是花臂不花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值