我有一个问题在java.lang.Class.getMethod
.
public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
{
return getMethod(name, parameterTypes, true);
}
第二个参数需要[java.lang.Object];
类型,并java
如下代码:
getMethod("say", new Class[]{String.class,int.class});
getMethod("say", new Class[]{Integer.TYPE,Integer.TYPE});
那么如何使用js
或其他方式创建此array
?
此外,我创建了一个这样的obj array
:
var Integerclass = Java.use("java.lang.Integer");
var objectArr = Java.array('Ljava.lang.Class;[Integerclass.TYPE,Integerclass.TYPE]);
但是我得到了一个无效的参数值错误,如何解决它?
{'type': 'error', 'description': 'error: invalid parameter value', 'stack': 'error: invalid parameter value at frida/node_modules/frida-java/lib/env.js:515 at frida/node_modules/frida-java/lib/class-factory.js:2592 at toJniObjectArray (frida/node_modules/frida-java/lib/class-factory.js:2640( at java.js:4489 at frida/node_modules/frida-java/lib/class-factory.js:743 at [anon] (script1.js:28( at input:1', 'fileName': 'frida/node_modules/frida-java/lib/env.js', 'lineNumber': 515, 'columnNumber': 1}
使用反射的 java 代码将是:
int length = 42;
int[] arr = (int[]) java.lang.reflect.Array.newInstance(int.class, length);
其中int.class
对应于常数Integer.TYPE
。
您可以将反射用作:
klazz.getMethod("avg", int[].class, int.class);
JavaScript 可以使用包装这个。
我对 JavaScript 的猜测:
var StringClass = Java.use("java.lang.String.class");
var IntClass = Java.use("int.class");
var IntArrayClass = Java.use("int[].class");
var objectArr = Java.array([IntClass, IntArrayClass]);
var objectArr = Java.array([StringClass, IntClass]);
getMethod("say", objectArr);
如果你想要一个'int':
Integer = Java.use("java.lang.Integer")
int = Integer.class.getField("TYPE").get(null)
希望你能工作
int number似乎不能被识别为"java.lang.Object",但是一个方法(param有一个"int"(可以自动适应它。下面是一个示例:
var iActivityManager = ActivityManagerNative.class.getMethod("getDefault", null).invoke(null, null)
var method_startUserInBackground = ActivityManagerNative.class.getMethod("startUserInBackground", [int])
var isOK = method_startUserInBackground.invoke(iActivityManager, [Integer.$new(10)])
getMethod - use 'int' ; sendParam - use 'Integer'