如何在 Frida 中使用 "int" 重载函数
How to overload function with "int" in Frida
我有以下功能:
public final int getState(@NotNull String str, int i) {
Intrinsics.checkParameterIsNotNull(str, "key");
return PreferenceManager.getDefaultSharedPreferences(this).getInt(str, i);
}
重载时不知道用int
参数给谁。这是我试过的:
var myapp= Java.use('com.myapp.AppActivity');
myapp.cleanUi.overload().implementation = function () {
console.log('! Intercepted cleanUi');
}
抛出异常:
{'type': 'error', 'description': "Error: getState(): specified argument types do not match any of:
.overload('java.lang.String', 'java.lang.String')
.overload('java.lang.String', 'float')
.overload('java.lang.String', 'int')", 'stack': "Error: getState(): specified argument types do not match any of:
.overload('java.lang.String', 'java.lang.String')
.overload('java.lang.String', 'float')
.overload('java.lang.String', 'int')
at throwOverloadError (frida/node_modules/frida-java/lib/class-factory.js:2233)
at frida/node_modules/frida-java/lib/class-factory.js:1422
at [anon] (/script1.js:25)
at frida/node_modules/frida-java/lib/vm.js:42
at M (frida/node_modules/frida-java/index.js:347)
at frida/node_modules/frida-java/index.js:299
at frida/node_modules/frida-java/lib/vm.js:42
at frida/node_modules/frida-java/index.js:279
at /script1.js:82", 'fileName': 'frida/node_modules/frida-java/lib/class-factory.js', 'lineNumber': 2233, 'columnNumber': 1}
在写问题的过程中,我发现了问题所在,并想与您分享。
我只需要添加我正在使用的参数,所以只需添加这些 str
和 myint
:
myapp.getState.overload('java.lang.String', 'int').implementation = function (str, myint) {
console.log('! Intercepted getState');
return 100;
};
我有以下功能:
public final int getState(@NotNull String str, int i) {
Intrinsics.checkParameterIsNotNull(str, "key");
return PreferenceManager.getDefaultSharedPreferences(this).getInt(str, i);
}
重载时不知道用int
参数给谁。这是我试过的:
var myapp= Java.use('com.myapp.AppActivity');
myapp.cleanUi.overload().implementation = function () {
console.log('! Intercepted cleanUi');
}
抛出异常:
{'type': 'error', 'description': "Error: getState(): specified argument types do not match any of:
.overload('java.lang.String', 'java.lang.String')
.overload('java.lang.String', 'float')
.overload('java.lang.String', 'int')", 'stack': "Error: getState(): specified argument types do not match any of:
.overload('java.lang.String', 'java.lang.String')
.overload('java.lang.String', 'float')
.overload('java.lang.String', 'int')
at throwOverloadError (frida/node_modules/frida-java/lib/class-factory.js:2233)
at frida/node_modules/frida-java/lib/class-factory.js:1422
at [anon] (/script1.js:25)
at frida/node_modules/frida-java/lib/vm.js:42
at M (frida/node_modules/frida-java/index.js:347)
at frida/node_modules/frida-java/index.js:299
at frida/node_modules/frida-java/lib/vm.js:42
at frida/node_modules/frida-java/index.js:279
at /script1.js:82", 'fileName': 'frida/node_modules/frida-java/lib/class-factory.js', 'lineNumber': 2233, 'columnNumber': 1}
在写问题的过程中,我发现了问题所在,并想与您分享。
我只需要添加我正在使用的参数,所以只需添加这些 str
和 myint
:
myapp.getState.overload('java.lang.String', 'int').implementation = function (str, myint) {
console.log('! Intercepted getState');
return 100;
};