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 log = Java.use("android.util.Log");
log.w.overload('java.lang.String', 'java.lang.String').implementation = function (a, b) {
showstack();
console.log("log.w: ", a, b);
return this.w(a, b);
}
log.w.overload('java.lang.String', 'java.lang.Throwable').implementation = function (a, b) {
showstack();
console.log("log.w: ", a, b);
return this.w(a, b);
}
log.w.overload('java.lang.String', 'java.lang.String', 'java.lang.Throwable').implementation = function (a, b,c) {
showstack();
console.log("log.w: ", a, b,c);
return this.w(a, b,c);
}
})
这种方法是用于APP代码里面写了调试信息的
androidsdk中提供了log输出的api,方法在android.util.Log类中。
Log.v(tag,message); //verbose模式,打印最详细的日志
Log.d(tag,message); //debug的日志
Log.i(tag,message); //info的日志
Log.w(tag,message); //warn的日志
Log.e(tag,message); //error的日志