如何查看方法在哪里被调用

有时候代码有点多的时候,你真的找不到方法在哪里调用。可能在一个控制器里面被调用。比如说在另一个类里面被调用了。二代码很多的时候,你又是一个新人,那么怎么知道哪个被调用了。

调用栈。
在你想知道那个被调用的方法哪里打断点,然后执行到这里之后,查看调用栈。就知道哪个方法被调用了。

这里写图片描述

转载于:https://www.cnblogs.com/caoxinyu/p/6647813.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Frida查看一个Java方法被哪些方法调用,可以按照以下步骤操作: 1. 在需要查看的应用程序中,找到目标Java方法。 2. 在Frida中编写JavaScript脚本,使用Java.use()函数引用目标Java,并使用该方法名作为函数名。 3. 在脚本中使用Java.use()函数引用目标Java调用目标方法的所有其他方法。 4. 在调用这些方法时,将它们的调用堆栈记录到Frida脚本中的一个数组中。 5. 最后,在目标应用程序中触发目标Java方法,以启动Frida脚本并捕获其输出。 6. 在Frida的控制台中查看脚本输出,以查看目标Java方法调用情况和调用堆栈。 下面是一个示例Frida脚本,用于查看目标应用程序中的java.lang.String的equals()方法被哪些方法调用: ```javascript Java.perform(function() { var StringClass = Java.use("java.lang.String"); // 定义一个数组来记录equals()方法调用堆栈 var callStack = []; // 用于在Java调用栈中记录方法 function recordMethodCall(method) { var caller = Java.use("java.lang.Thread").currentThread().getStackTrace(); var callerClassName = caller[2].getClassName(); var callerMethodName = caller[2].getMethodName(); var call = { "class": callerClassName, "method": callerMethodName }; method.callStack.push(call); } // 引用所有调用equals()方法的其他方法 var StringEquals = StringClass.equals.overload("java.lang.Object"); StringEquals.implementation = function(other) { // 记录equals()方法调用堆栈 var call = { "class": "java.lang.String", "method": "equals", "callStack": [] }; callStack.push(call); // 记录调用equals()方法方法调用堆栈 recordMethodCall(callStack[callStack.length - 1]); // 调用equals()方法并返回结果 var result = this.equals(other); return result; }; // 在控制台中打印所有调用equals()方法方法调用堆栈 Java.use("java.lang.Runtime").getRuntime().addShutdownHook( Java.use("java.lang.Thread").$new({ "run": function() { console.log("equals() method call stack:"); for (var i = 0; i < callStack.length; i++) { var call = callStack[i]; console.log(" " + call.class + "." + call.method); for (var j = 0; j < call.callStack.length; j++) { var stackCall = call.callStack[j]; console.log(" at " + stackCall.class + "." + stackCall.method); } } } }) ); }); ``` 这个脚本会在每次目标应用程序中调用String.equals()方法时,记录该方法调用堆栈和调用方法方法调用堆栈。在目标应用程序结束时,脚本会在Frida控制台中打印所有调用equals()方法方法调用堆栈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值