昆明房产网站建设,网站排名做不上去吗,临沂专业网站建设公司电话,wordpress云落主题免责声明#xff1a;内容仅供学习参考#xff0c;请合法利用知识#xff0c;禁止进行违法犯罪活动#xff01;
内容参考于#xff1a;图灵Python学院
本人写的内容纯属胡编乱造#xff0c;全都是合成造假#xff0c;仅仅只是为了娱乐#xff0c;请不要盲目相信。
工…免责声明内容仅供学习参考请合法利用知识禁止进行违法犯罪活动
内容参考于图灵Python学院
本人写的内容纯属胡编乱造全都是合成造假仅仅只是为了娱乐请不要盲目相信。
工具下载 链接https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提取码6tw3 复制这段内容后打开百度网盘手机App操作更方便哦 上一个内容13.安卓逆向-frida基础-编写hook脚本1
接着上一个内容继续接下来是HOOK构造方法 如下图红框它有两个构造方法 app中调用构造方法的位置 脚本代码 function demo4(){// HOOK构造方法var money Java.use(com.luoge.com.Money)money.$init.overload(java.lang.String,int).implementation function(str, ii){// 重写构造方法console.log(str, ii) // 查看原本参数的值str 飞机// 修改参数ii 22222// 修改参数this.$init(str,ii) // 调用原本的构造方法}}效果图 主动调用 效果图 function demo5(){var res Java.use(com.luoge.com.Money).$new(xxx,23313).getInfo()console.log(主动调用, res)
}第二种主动调用 function demo5(){var res Java.use(com.luoge.com.Money).$new(xxx,23313).getInfo()console.log(主动调用, res)Java.choose(com.luoge.com.Money, {onMatch:function(obj){ // 这里每找到一个Money对象就会调用一次console.log(Java.choose, obj.getInfo())},onComplete:function(){console.log(Money对象搜索完执行的代码)}})
}HOOK字段 字段就是下图红框里的东西 HOOK静态的字段 function demo6(){var money Java.use(com.luoge.com.Money)console.log(flag类型, JSON.stringify(money.flag));console.log(flag的值, money.flag.value);money.flag.value mmmmconsole.log(flag修改之后的值, money.flag.value);
}HOOK非静态的字段 function demo6(){var money Java.use(com.luoge.com.Money)
// console.log(flag类型, JSON.stringify(money.flag));
// console.log(flag的值, money.flag.value);
// money.flag.value mmmm
// console.log(flag修改之后的值, money.flag.value);Java.choose(com.luoge.com.Money, {onMatch:function(obj){ // 这里每找到一个Money对象就会调用一次console.log(Java.choose非静态变量字段, obj._name.value)obj._name.value 张飞console.log(Java.choose修改之后非静态变量字段, obj._name.value)},onComplete:function(){console.log(Money对象搜索完执行的代码)}})}HOOK内部类 下图红框的就是内部类 效果图 function demo7(){var innerClass Java.use(com.luoge.com.Money$innerClass)// 内部类的对象使用$符号加类名获取innerClass.$init.overload(java.lang.String,int).implementation function(s,i){console.log(demo7s, s);console.log(demo7i, i);this.$init(s,i);console.log(this.outPrint())}
}获取全部类和方法 function demo8(){console.log(Java.enumerateLoadedClassesSync().join(\n))
}获取指定类的普通方法 function demo8(){
// console.log(Java.enumerateLoadedClassesSync().join(\n))var utils Java.use(com.luoge.com.Utils)var methods utils.class.getDeclaredMethods()for(var i 0; i methods.length; i){console.log(methods[i].getName());}
}获取指定类的构造方法 function demo8(){
// console.log(Java.enumerateLoadedClassesSync().join(\n))console.log(普通方法)var utils Java.use(com.luoge.com.Utils)var methods utils.class.getDeclaredMethods()for(var i 0; i methods.length; i){console.log(methods[i].getName());}console.log(构造方法)var money Java.use(com.luoge.com.Money)methods money.class.getDeclaredConstructors()for(var i 0; i methods.length; i){console.log(methods[i].toString());console.log(methods[i].getName());}} 获取指定类的字段 获取指定类的内部类 function demo8(){
// console.log(Java.enumerateLoadedClassesSync().join(\n))console.log(普通方法\n)var utils Java.use(com.luoge.com.Utils)var methods utils.class.getDeclaredMethods()for(var i 0; i methods.length; i){console.log(methods[i].getName());}console.log(构造方法\n)var money Java.use(com.luoge.com.Money)methods money.class.getDeclaredConstructors()for(var i 0; i methods.length; i){console.log(methods[i].toString());console.log(methods[i].getName());}console.log(字段\n)var field money.class.getDeclaredFields()for(var i 0; i field.length; i){console.log(field[i].toString())console.log(field[i].getName())}console.log(内部类\n)var c money.class.getDeclaredClasses()for(var i 0; i c.length; i){console.log(c[i].toString())console.log(c[i].getName())}}安装 types/frida-gum 插件可以自动补齐Frida代码