Estoy tratando de llamar a una función con Frida que toma una matriz de cadenas como uno de sus argumentos.
public void coolFunction(long value, String[] strArr);Dentro de Java se llama así:
long importantValue = 4L; String[] importantArr = new String[]{"TEST"}; coolFunction(importantValue, importantArr); La sobrecarga se ve así: .overload('long', '[Ljava.lang.String;')
Probablemente podría crear una matriz de cadenas desde cero, pero no sé cómo expresarla en Javascript. ¿Cuál es el equivalente Frida de new String[]{"TEST"} ?
Por eso traté de convertir un ArrayList<String> en un String[] , que tampoco tuvo éxito.
Por lo que sé, hay dos formas sencillas de convertir ArrayList<String> en String[] :
Intento #1:
List<String> list = new ArrayList<String>(); list.add("TEST"); String[] stringArray = list.toArray(new String[0]);Si trato de expresarlo con Javascript se ve así:
var AL_class = Java.use("java.util.ArrayList"); var arrList = AL_class.$new(); arrList.add("TEST"); var stringArray = arrList.toArray(Java.use("[Ljava.lang.String;").$new(0));Esto falla con el siguiente mensaje de error:
Error: no supported overloadsIntento #2:
List<String> list = new ArrayList<String>(); list.add("TEST"); Object[] objectArray = list.toArray(); String[] stringArray = (String[]) objectArray;JavaScript:
var AL_class = Java.use("java.util.ArrayList"); var arrList = AL_class.$new(); arrList.add("TEST"); var arrayButAsObject = arrList.toArray(); var stringArray = Java.cast(arrayButAsObject, "[Ljava.lang.String;"); Esto falla porque asume que quiero usar la función toArray() de Javascript.
La solución a este problema es probablemente muy simple, pero he estado atrapado aquí durante bastante tiempo y parece que no puedo resolverlo. Cualquier ayuda sería apreciada.
En lugar de tratar de construir una lista y luego convertirla en una matriz, usaría la función de Frida Java.array y construiría directamente una matriz de cadenas:
var javaStringArray = Java.array('java.lang.String', [ "Test" ]);