frida 追踪"UnityAds.load方法调用
时间: 2023-12-06 10:02:05 浏览: 106
您可以使用 Frida 来追踪 "UnityAds.load" 方法的调用。下面是一个简单的示例代码:
```javascript
Java.perform(function() {
var UnityAds = Java.use('com.unity3d.ads.UnityAds');
UnityAds.load.implementation = function (arg1, arg2) {
console.log("UnityAds.load() is called with args: ", arg1, arg2);
return this.load(arg1, arg2);
}
});
```
这段代码将会 hook `UnityAds.load` 方法,并在该方法被调用时输出相关的参数信息。您可以将上述代码保存为一个 JavaScript 文件,然后使用 Frida 来加载该文件,即可追踪 `UnityAds.load` 方法的调用。具体命令如下:
```bash
$ frida -U -f com.example.app -l script.js --no-pause
```
其中,`com.example.app` 是您要追踪的应用程序的包名,`script.js` 是您保存的 JavaScript 文件的路径。
相关问题
frida 追踪"UnityAds.load方法被谁调用
要追踪"UnityAds.load"方法被谁调用,您需要使用 Frida hook 应用程序的 Java 层代码。下面是一个简单的示例代码:
```javascript
Java.perform(function() {
var UnityAds = Java.use('com.unity3d.ads.UnityAds');
UnityAds.load.implementation = function (arg1, arg2) {
var stacktrace = Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new());
console.log("UnityAds.load() is called from:\n", stacktrace);
return this.load(arg1, arg2);
}
});
```
这段代码将 hook `UnityAds.load` 方法,并在该方法被调用时输出调用栈信息。您可以将上述代码保存为一个 JavaScript 文件,然后使用 Frida 来加载该文件,即可追踪 `UnityAds.load` 方法被谁调用。具体命令如下:
```bash
$ frida -U -f com.example.app -l script.js --no-pause
```
其中,`com.example.app` 是您要追踪的应用程序的包名,`script.js` 是您保存的 JavaScript 文件的路径。
frida 查看com.unity3d.ads.UnityAds.load方法被谁调用
你可以使用Frida的Interceptor来hook UnityAds.load方法,然后在方法被调用时打印调用堆栈信息,以此来查看该方法被谁调用。
具体的Frida脚本代码如下:
```javascript
Interceptor.attach(Module.findExportByName("libunity.so", "_ZN3com6unity3d3ads9UnityAds4loadERKNS1_4IAdE"), {
onEnter: function(args) {
console.log("[*] UnityAds.load method called from:\n" + Thread.backtrace(this.context, Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join("\n"));
}
});
```
这个脚本会hook UnityAds.load方法,当该方法被调用时,会打印调用堆栈信息,包括调用该方法的函数名和调用该函数的地址。
阅读全文