[英]What is difference between int.class and Integer.TYPE in java?
[英]How to create a Integer.TYPE(int.class) array by frida js
我在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':'錯誤:無效的參數值','stack':'錯誤:無效的參數值\\ n在frida / node_modules / frida-java / lib / env.js:515 \\ n at frida / node_modules / frida-java / lib / class-factory.js:2592 \\ n at toJniObjectArray(frida / node_modules / frida-java / lib / class-factory.js:2640)\\ n at java.js:4489 \\ n在frida / node_modules / frida-java / lib / class-factory.js:743 \\ n在[anon](script1.js:28)\\ n在輸入: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可以使用wrap這個。
我對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 - 使用'int'; sendParam - 使用'整數'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.