Java.perform(function () {
console.log("start hooking...");
function showstack() {
var log = Java.use("android.util.Log");
var Throwable = Java.use("java.lang.Throwable");
console.log(log.getStackTraceString(Throwable.$new()))
}
var collections = Java.use("java.util.Collections");
collections.sort.overload('java.util.List').implementation = function (a) {
showstack();
var result = Java.cast(a, Java.use("java.util.ArrayList"));
console.log("collections.sort List: ", result.toString());
return this.sort(a);
}
collections.sort.overload('java.util.List', 'java.util.Comparator').implementation = function (a, b) {
showstack();
var result = Java.cast(a, Java.use("java.util.ArrayList"));
console.log("collections.sort List Comparator: ", result.toString());
return this.sort(a, b);
}
})
这个方法主要针对哈希系列的排序;
List是一个接口,是Collection接口的一个子接口,是一个有序的集合。
ArrayList是List的一个实现类,可以实现数组大小的可变,可以很方便的进行增加和删减数组内元素的操作。
此次hook也使用了Frida 的Java.cast强转的功能
除此之外还有java.util.Arrays -sort -toString