Frida unhookable 函数
Function is unhookable by Frida
我有以下 Java 代码,我正在尝试挂钩 getTimeZone 函数:
package com.myapp.models;
public class User {
private String timeZone;
public void setTimeZone(String str) {
this.timeZone = str;
}
public String getTimeZone() {
return this.timeZone;
}
}
这是我尝试使用的 frida 代码:
Java.perform(function () {
var User = Java.use("com.myapp.models.User");
User.getTimeZone.implementation = function() {
console.log("timezone requested")
return 12;
};
});
但是,挂钩似乎并没有发生,因为应用程序在 getTimezone 上崩溃,没有返回 vlue:
10-21 12:17:23.013 26553 26553 E AndroidRuntime: Process: com.myapp.android, PID: 26553
10-21 12:17:23.013 26553 26553 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.myapp.models.User.getTimeZone()' on a null object reference
10-21 12:17:23.013 26553 26553 E AndroidRuntime: at com.myapp.features.home.logs.updateChart(Presenter.java:370)
10-21 12:17:23.013 26553 26553 E AndroidRuntime: at com.myapp.features.home.logs.loadGraph(Presenter.java:217)
10-21 12:17:23.013 26553 26553 E AndroidRuntime: at com.myapp.features.home.logs.onResume(Fragment.java:313)
我知道这个函数没有错别字,我运行在frida:
就识别成功了
[Redmi Note 7::myapp]-> Java.use("com.myapp.models.User").getTimeZone
function
[Redmi Note 7::myapp]-> Java.use("com.myapp.models.User").getTimeZone.implementation
"0x7e3682a128"
你的 Frida 代码有一个主要问题:
getTimeZone 的定义是 String getTimeZone()
因此你必须 return 一个 String
.
但是你的 Frida 代码 return 一个 int 值:return 12;
将其更改为 return "12";
,您的 Frida 代码应该可以工作。
定义 User
class 的 Android 应用程序可能存在第二个问题(在其中一种方法 com.myapp.features.home.logs.updateChart
中,您没有包含在问题中) .基于异常
java.lang.NullPointerException: Attempt to invoke virtual method java.lang.String com.myapp.models.User.getTimeZone()' on a null object reference
应用程序似乎调用了 getTimeZone()
而没有先构建 User()
实例。除非你更正 Frida 挂钩代码无法正常工作。
我有以下 Java 代码,我正在尝试挂钩 getTimeZone 函数:
package com.myapp.models;
public class User {
private String timeZone;
public void setTimeZone(String str) {
this.timeZone = str;
}
public String getTimeZone() {
return this.timeZone;
}
}
这是我尝试使用的 frida 代码:
Java.perform(function () {
var User = Java.use("com.myapp.models.User");
User.getTimeZone.implementation = function() {
console.log("timezone requested")
return 12;
};
});
但是,挂钩似乎并没有发生,因为应用程序在 getTimezone 上崩溃,没有返回 vlue:
10-21 12:17:23.013 26553 26553 E AndroidRuntime: Process: com.myapp.android, PID: 26553
10-21 12:17:23.013 26553 26553 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.myapp.models.User.getTimeZone()' on a null object reference
10-21 12:17:23.013 26553 26553 E AndroidRuntime: at com.myapp.features.home.logs.updateChart(Presenter.java:370)
10-21 12:17:23.013 26553 26553 E AndroidRuntime: at com.myapp.features.home.logs.loadGraph(Presenter.java:217)
10-21 12:17:23.013 26553 26553 E AndroidRuntime: at com.myapp.features.home.logs.onResume(Fragment.java:313)
我知道这个函数没有错别字,我运行在frida:
就识别成功了[Redmi Note 7::myapp]-> Java.use("com.myapp.models.User").getTimeZone
function
[Redmi Note 7::myapp]-> Java.use("com.myapp.models.User").getTimeZone.implementation
"0x7e3682a128"
你的 Frida 代码有一个主要问题:
getTimeZone 的定义是 String getTimeZone()
因此你必须 return 一个 String
.
但是你的 Frida 代码 return 一个 int 值:return 12;
将其更改为 return "12";
,您的 Frida 代码应该可以工作。
定义 User
class 的 Android 应用程序可能存在第二个问题(在其中一种方法 com.myapp.features.home.logs.updateChart
中,您没有包含在问题中) .基于异常
java.lang.NullPointerException: Attempt to invoke virtual method java.lang.String com.myapp.models.User.getTimeZone()' on a null object reference
应用程序似乎调用了 getTimeZone()
而没有先构建 User()
实例。除非你更正 Frida 挂钩代码无法正常工作。