AndroidDemo.apk之frida练习
function Hooktest1() {
var login = Java.use('com.example.androiddemo.Activity.LoginActivity');
login.a.overload('java.lang.String', 'java.lang.String').implementation = function (a, b) {
console.log(a, b);
console.log(this.a(a, b));
return this.a(a, b);
}
}
function Hooktest2() {
var activity1 = Java.use('com.example.androiddemo.Activity.FridaActivity1');
activity1.a.implementation = function (a) {
return 'R4jSLLLLLLLLLLOrLE7/5B+Z6fsl65yj6BgC6YWz66gO6g2t65Pk6a+P65NK44NNROl0wNOLLLL=';
}
}
function Hooktest3() {
var activity2 = Java.use('com.example.androiddemo.Activity.FridaActivity2');
activity2.static_bool_var.value = true;
Java.choose('com.example.androiddemo.Activity.FridaActivity2', {
onMatch: function (obj) {
obj.bool_var.value = true;
}, onComplete: function () {
}
});
}
function Hooktest4() {
var activity3 = Java.use('com.example.androiddemo.Activity.FridaActivity3');
activity3.static_bool_var.value = true;
Java.choose('com.example.androiddemo.Activity.FridaActivity3', {
onMatch: function (obj3) {
obj3.bool_var.value = true;
obj3._same_name_bool_var.value = true;
}, onComplete: function () { }
})
}
function Hooktest5() {
var InnerClasses = Java.use('com.example.androiddemo.Activity.FridaActivity4$InnerClasses');
var methods = InnerClasses.class.getDeclaredMethods();
for (var i = 0; i < methods.length; i++) {
console.log(methods[i].getName());
var method_name = methods[i].getName();
InnerClasses[method_name].implementation = function () { return true; };
}
}
function Hooktest6() {
Java.choose("com.example.androiddemo.Activity.FridaActivity5", {
onMatch: function (instance) {
console.log("found instance getDynamicDexCheck :", instance.getDynamicDexCheck().$className);
}, onComplete: function () { console.log("search complete!") }
})
Java.enumerateClassLoaders({
onMatch: function (loader) {
try {
if (loader.findClass("com.example.androiddemo.Dynamic.DynamicCheck")) {
console.log("Succefully found loader!", loader);
Java.classFactory.loader = loader;
}
} catch (error) {
console.log("found error " + error)
}
}, onComplete: function () { "enum completed!" }
})
Java.use("com.example.androiddemo.Dynamic.DynamicCheck").check.implementation = function () { return true };
}
function Hooktest7() {
Java.use("com.example.androiddemo.Activity.Frida6.Frida6Class0").check.implementation = function () { return true };
Java.use("com.example.androiddemo.Activity.Frida6.Frida6Class1").check.implementation = function () { return true };
Java.use("com.example.androiddemo.Activity.Frida6.Frida6Class2").check.implementation = function () { return true };
}
function Hooktest7_1(){
Java.enumerateLoadedClasses({
onMatch:function(name,handle){
if(name.indexOf('com.example.androiddemo.Activity.Frida6')!=-1){
console.log(name,handle);
Java.use(name).check.implementation = function(){
return true;
}
}
},onComplete:function(){
}
})
}
function main() {
Java.perform(function () {
Hooktest7_1();
});
}
setImmediate(main);