Как создать массив Integer.TYPE (int.class) с помощью frida js - PullRequest
0 голосов
/ 15 апреля 2019

У меня вопрос в 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});

, так какМогу ли я создать array, используя js или другими способами?

Кроме того, я создал obj array следующим образом:

var Integerclass = Java.use("java.lang.Integer");
var objectArr = Java.array('Ljava.lang.Class;[Integerclass.TYPE,Integerclass.TYPE]);

, но я получил неверныйзначение аргумента ошибка, как ее решить?:

{'type': 'error', 'description': 'Error: неверное значение аргумента', 'stack': 'Error:недопустимое значение аргумента \ n в frida / node_modules / frida-java / lib / env.js: 515 \ n в frida / node_modules / frida-java / lib / class-factory.js: 2592 \ n в toJniObjectArray (frida / node_modules /frida-java / lib / class-factory.js: 2640) \ n в 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}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

, если вы хотите 'int':

Integer = Java.use("java.lang.Integer")
int = Integer.class.getField("TYPE").get(null)

надеюсь, что вы можете работать

int число, кажется, не может быть распознано как 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 - использовать 'Integer'

0 голосов
/ 15 апреля 2019

Код 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);
...