frida: Error: a(): argument types do not match any of: overload('int', 'int', 'long', 'java.lang.String', 'java.lang.Object')
frida: Error: a(): argument types do not match any of: overload('int', 'int', 'long', 'java.lang.String', 'java.lang.Object')
我正在尝试调用具有此签名的方法 (int, int, long, String, Object)
问题是最后一个参数需要是一个字符串数组
当我挂钩它并打印它的最后一个参数时,将显示如下内容:
[Ljava.lang.String@abcd1234;
而且如果我通过它,该函数就可以正常工作
但是当我将它更改为我的自定义 String
array
如下所示:
const arrayList = Java.use("java.util.ArrayList")
const myArray = arrayList.$new()
myArray.add("test")
myArray.add("test-1")
const stringArr = myArray.toArray()
this.a(arguments[0], arguments[1], arguments[2], arguments[3], stringArr)
会抛出错误:
Error: a(): argument types do not match any of:
.overload('int', 'int', 'long', 'java.lang.String', 'java.lang.Object')
at X (frida/node_modules/frida-java-bridge/lib/class-factory.js:563)
at value (frida/node_modules/frida-java-bridge/lib/class-factory.js:967)
at e (frida/node_modules/frida-java-bridge/lib/class-factory.js:547)
at <anonymous> (/script1.js:94)
at <anonymous> (frida/node_modules/frida-java-bridge/lib/vm.js:12)
at perform (frida/node_modules/frida-java-bridge/index.js:193)
at ms_bd_c_h_a (/script1.js:99)
at apply (native)
at <anonymous> (frida/runtime/message-dispatcher.js:13)
at c (frida/runtime/message-dispatcher.js:23)
我该怎么办?
在您的代码中,您让 Frida 根据参数决定调用哪个重载方法。正如您所注意到的,这可能会变得复杂(如果您想传递 null
或其他不明确的参数,甚至会变得更复杂)。
所以我的建议是先定义你要调用的方法,然后调用它:
const cls = Java.use(<name of the class of a>)
const methodA = cls.overload('int', 'int', 'long', 'java.lang.String', '[java.lang.String')
methodA.call(this, arguments[0], arguments[1], arguments[2], arguments[3], stringArr)
我正在尝试调用具有此签名的方法 (int, int, long, String, Object)
问题是最后一个参数需要是一个字符串数组
当我挂钩它并打印它的最后一个参数时,将显示如下内容:
[Ljava.lang.String@abcd1234;
而且如果我通过它,该函数就可以正常工作
但是当我将它更改为我的自定义 String
array
如下所示:
const arrayList = Java.use("java.util.ArrayList")
const myArray = arrayList.$new()
myArray.add("test")
myArray.add("test-1")
const stringArr = myArray.toArray()
this.a(arguments[0], arguments[1], arguments[2], arguments[3], stringArr)
会抛出错误:
Error: a(): argument types do not match any of:
.overload('int', 'int', 'long', 'java.lang.String', 'java.lang.Object')
at X (frida/node_modules/frida-java-bridge/lib/class-factory.js:563)
at value (frida/node_modules/frida-java-bridge/lib/class-factory.js:967)
at e (frida/node_modules/frida-java-bridge/lib/class-factory.js:547)
at <anonymous> (/script1.js:94)
at <anonymous> (frida/node_modules/frida-java-bridge/lib/vm.js:12)
at perform (frida/node_modules/frida-java-bridge/index.js:193)
at ms_bd_c_h_a (/script1.js:99)
at apply (native)
at <anonymous> (frida/runtime/message-dispatcher.js:13)
at c (frida/runtime/message-dispatcher.js:23)
我该怎么办?
在您的代码中,您让 Frida 根据参数决定调用哪个重载方法。正如您所注意到的,这可能会变得复杂(如果您想传递 null
或其他不明确的参数,甚至会变得更复杂)。
所以我的建议是先定义你要调用的方法,然后调用它:
const cls = Java.use(<name of the class of a>)
const methodA = cls.overload('int', 'int', 'long', 'java.lang.String', '[java.lang.String')
methodA.call(this, arguments[0], arguments[1], arguments[2], arguments[3], stringArr)