簡體   English   中英

如何通過frida js創建Integer.TYPE(int.class)數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM