我想通过frida hook获取安卓ActivityThread.class中的currentActivityThread方法对应的ArtMethod对象中的hotness_count_字段值
时间: 2023-02-25 15:06:29 浏览: 64
你可以使用Frida API来hook Android的ActivityThread类中的currentActivityThread方法,然后获取其对应的ArtMethod对象,最后读取hotness_count_字段的值。
首先,你需要使用Java.use() API加载ActivityThread类:
```
Java.perform(function () {
var ActivityThread = Java.use("android.app.ActivityThread");
});
```
然后,你可以使用Frida API中的overload()方法来hook currentActivityThread方法:
```
Java.perform(function () {
var ActivityThread = Java.use("android.app.ActivityThread");
ActivityThread.currentActivityThread.overload().implementation = function () {
console.log("Hooked currentActivityThread method");
var ret = this.currentActivityThread.call(this);
// 获取ArtMethod对象
var artMethod = ret.getClass().getDeclaredMethod("getCurrentActivityThread").getArtMethod();
// 获取hotness_count_字段的值
console.log("hotness_count_ value: " + artMethod.hotness_count_);
return ret;
};
});
```
在上面的代码中,我们首先打印了一条消息表示当前方法已经被成功hook,然后调用了原始的currentActivityThread方法,并获取了它的返回值。接下来,我们通过Java反射API获取了ActivityThread中的getCurrentActivityThread方法的ArtMethod对象,最后获取了hotness_count_字段的值并打印出来。
请注意,hotness_count_字段是一个私有字段,因此在没有root权限的情况下可能无法访问。