Depuro una aplicación de Android con Frida y sobrecargo la función que devuelve java.util.List<SomeObject>
Quiero eliminar el primer elemento de la Lista que devuelve la función.
¿Cómo puedo hacer eso por favor?
Java.perform(function x() { var my_class = Java.use("ab"); my_class.c.overload().implementation = function () { var s= this.c(); // THE FUNCTION RETURN java.util.List<SomeObject> //HERE I WANT TO REMOVE THE FIRST ELEMENT IN S return s; }; }); Aquí está la función c :
public List<SomeObject> c() { return this.c; }Primero, debe convertir la variable s en java.util.List , luego puede llamar a los métodos o usarla como argumento, por ejemplo, para crear una nueva Lista.
El siguiente código funciona si la lista que devuelve c() es mutable:
let s = this.c(); let list = Java.cast(s, Java.use("java.util.List")); list.remove(0); return list;Si la Lista devuelta es inmutable, debe crear una nueva matriz mutable y eliminar el primer elemento:
let s = this.c(); let list = Java.cast(s, Java.use("java.util.List")); let newList = Java.use("java.util.ArrayList").$new(list); newList.remove(0); return newList; Las listas mutables son, por ejemplo, ArrayList , LinkedList . Los inmutables son, por ejemplo, creados por List.of(...) Arrays.asList(...) , envolviendo una lista con Collections.unmodifiableList() o generalmente mediante expresiones stream/lambda.