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 ArrayList = Java.use("java.util.ArrayList");
ArrayList.add.overload("java.lang.Object").implementation = function (a) {
var v=a.toString()
if (v.indexOf("username")!=-1){
console.log("toString", v,typeof v)
showstack();
}
return this.add(a);
}
var ArrayList = Java.use("java.util.ArrayList");
ArrayList.add.overload('int', 'java.lang.Object').implementation = function (a, b) {
if (b.toString().indexOf("username")!=-1){
console.log(a," || ",b)
}
return this.add(a, b);
}
})
- ArrayList有两个重载:(‘int’, ‘java.lang.Object’)和(“java.lang.Object”)
注意点,在 javaScript或者jQuery中字符串比较没有equals()方法,要比较两个字符串是否相等可以直接用==或者is()进行判断
我们平时在hook代码里面使用的是Frida-tools给我们提供的工具。当我们使用equals报错时候不妨使用==或者is();
或者吧对象转为字符串,用indexof 是否等于-1进行判断;
这两个空了遇到了再进行补充:
Vector
LinkedList