function hookTest6(){ Java.perform(function(){ //内部类 var innerClass = Java.use("com.zj.wuaipojie.Demo$innerClass"); console.log(innerClass); innerClass.$init.implementation = function(){ console.log("eeeeeeee"); }
}); }
6.枚举所有的类与类的所有方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
function hookTest7(){ Java.perform(function(){ //枚举所有的类与类的所有方法,异步枚举 Java.enumerateLoadedClasses({ onMatch: function(name,handle){ //过滤类名 if(name.indexOf("com.zj.wuaipojie.Demo") !=-1){ console.log(name); var clazz =Java.use(name); console.log(clazz); var methods = clazz.class.getDeclaredMethods(); console.log(methods); } }, onComplete: function(){} }) }) }
7.枚举所有方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
function hookTest8(){ Java.perform(function(){ var Demo = Java.use("com.zj.wuaipojie.Demo"); //getDeclaredMethods枚举所有方法 var methods =Demo.class.getDeclaredMethods(); for(var j=0; j < methods.length; j++){ var methodName = methods[j].getName(); console.log(methodName); for(var k=0; k<Demo[methodName].overloads.length;k++){ Demo[methodName].overloads[k].implementation = function(){ for(var i=0;i<arguments.length;i++){ console.log(arguments[i]); } return this[methodName].apply(this,arguments); } } } }) }
8.主动调用
静态方法
1 2 3 4 5 6 7
function hookTest9(){ Java.perform(function(){ var ClassName=Java.use("com.zj.wuaipojie.Encode"); var ret = ClassName.encode("aaaaaaaaaaaa"); console.log(ret); }) }
非静态方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
function hookTest10(){ var ret = null; Java.perform(function () { Java.choose("com.zj.wuaipojie.Demo",{ //要hook的类 onMatch:function(instance){ ret=instance.privateFunc("aaaaaaa"); //要hook的方法 }, onComplete:function(){ // console.log("result: " + ret); } }); }) //return ret;