首页 > 其他分享 >学习笔记-组件和事件hook核心原理和案例

学习笔记-组件和事件hook核心原理和案例

时间:2022-11-11 09:24:31浏览次数:47  
标签:function p1 console log 笔记 hook 组件 android

组件和事件的hook核心原理和案例

0x01 构造方法的hook的例子(java.lang.String这个随便哪个类都行)

#构造方法的hook
Java.use("java.lang.String").$init.implementation=....
#构造方法的主动调用
Java.use("java.lang.String").$new("YenKoc")

0x02 显示类的方法和变量 上一节课使用的是wallbreaker这个插件,直接命令行就能输出,还可以找出对象以及类的信息,还可以搜索对象实例,根据objection的源码来看,其实也就是frida的一个枚举类的hook,然后封装起来的。frida本质操作对象还是对类为基本对象进行操作的。

0x03 组件hook 这里也是按objection的源码去理解,在看视频的途中,我也发现了其实写frida hook其实也就是调用系统的api,最终还是写开发的代码,只不过平常我们写java开发是直接调用现成的一些系统jar,frida的话,是通过hook的方式操作。

objection中如何通过android intent lanuch_activity xxx.mainActivity启动活动(界面) 还给出了个打印intent信息的脚本

Java.perform(function(){
var Activity=Java.use("android.app.Activity");
Activity.startActivity.overload("android.content.Intent").implementation=function(p)
{
console.log("Hooking android.app.Activity.startActivity(p1) successfully,p1="+p1);
console.log(decodeURIComponent(p1.toUri(256)));
this.startActivity(p1);
}
Activity.startActivity.overload("android.content.Intent","android.os.Bundle").implementation=function(p1,p2)
{
console.log("Hooking android.app.Activity.startActivity(p1,p2) successfully,p1="+p1,",p2="+p2);
console.log(decodeURIComponent(p1.toUri(256)));
this.startActivity(p1);
}
Activity.startService.overload("android.content.Intent").implementation=function(p1){
console.log("Hooking android.app.Activity.startService(p1) successful.p1="+p1);
console.log(decodeURIComponent(p1.toUri(256)));
this.startService(p1);
}
})

接下来是讲解如何去hook,按钮点击时间的onClick方法的hook,这样可以打印出对应的类名,肉丝说一般的开发都不可能是使用直接实现ViewOnClick这个接口,创建匿名类的手法,这样很乱,我直接踩雷,好像平时也都是这样去写,可能是控件还不够多2333. 这里挂一下hook 打印出onClick方法的类的类名 ``` function watch(obj,mtdName) { var listener_name=getObjClassName(obj); var target=Java.use(listener_name); if(!target||!mtdName in target) { return; } target[mtdName].overloads.forEach(function(overload){ overload.implementation=function(){ console.log(“[WatchEvent]”+mtdName+“:”+getObjClassName(this)); return this[mtdName].apply(this.argument); }

})

} function OnClickListener() { Java.perform(function(){ #以spawn的模式自启动的hook Java.use(“android.view.View”).setOnClickListener.implementation=function(listener){ if(listener!=null) { watch(listener,“onClick); } return this.setOnClickListener(listener); }; #attach模式去附加进程的hook,就是更慢的hook,需要看hook的时机,hook一些已有的东西 Java.choose(”android.view.ViewListenerInfo”,{ onMatch:function(instance){ instance=instance.mOnClickListener.value; if(instance) { console.log(“instance name is”+getObjClassName(instance)); watch(instance,“onClick); } }, onComplete:function(){

}
})

})

} watch这个函数,相等于是将实现点击接口类的所有onClick方法重载都hook了,只要调用这个方法就会打印出该类的名字

 

 

 

 

点击关注,共同学习!
[安全狗的自我修养](https://mp.weixin.qq.com/s/E6Kp0fd7_I3VY5dOGtlD4w)


[github haidragon](https://github.com/haidragon)


https://github.com/haidragon

标签:function,p1,console,log,笔记,hook,组件,android
From: https://www.cnblogs.com/haidragon/p/16879517.html

相关文章

  • 学习笔记-Frida反调试思路和hook native
    用户代码nativehookFrida反调试与反反调试基本思路(Java层API,Native层API,Syscall)六月题的Frida反调试的实现以及Native函数的Javahook以及主动调用静态注册函......
  • 学习笔记-hook和主动调用
    用户代码nativehook静态注册函数参数,返回值打印和替换调用栈主动调动符号hook==偏移hook枚举并保存结果0x01修改返回值以及参数和主动调用修改返回值修改......
  • 学习笔记-JNI框架层的Hook利用
    系统框架nativehookJNI函数符号hookJNI函数参数、返回值打印和替换动态注册JNI_OnloadhookRegisterNativesjnitrace引入一个例子,hookGetStringUTFChars这个jn......
  • 学习笔记-libc框架层的Hook利用
    系统框架层nativehooklibc函数符号hooklibc函数参数、返回值打印和替换主动调用libc读写文件hooklinkerdlopenfrida-trace引入例子,先hookpthread这个libc函......
  • Vue3学习笔记(五)——路由,Router
    一、前端路由的概念与原理1.1.什么是路由路由(英文:router)就是对应关系。1.2.SPA与前端路由SPA指的是一个web网站只有唯一的一个HTML页面,所有组件的展示与切换都......
  • vue grid layout 设定某组件为最低位,其它子item无法拖拽超过
    逻辑:  设定某项X为底部  逻辑:  for循环获取最低位的itemY的信息:i和y  如果i!=X.i    initY=X.y    则调整X.y=initY+Y.h  ......
  • 问题:父组件mounted发送异步请求,子组件props接收?
    极有可能是因为,父组件mounted异步的请求,在子组件中被v-for控制,所以导致了,父组件mounted会先执行 父组件mounted中发送一个异步请求,然后发送给子组件子组件通过props接收......
  • 方滨兴院士讲座笔记
    安全和技术是伴生,没有技术,就没有安全问题人工智能在安全领域的四种表现形态深度伪造:利用人工智能仿生,通过像人脸识别那样的检测,或者AI换脸智能防御:人工智能预测攻击后......
  • Head First Java 读书笔记
    第11章:异常处理如果你把有风险的程序代码包含在try/catch块中,那么编译器会放心很多。try/catch块会告诉编译器你确实知道所调用的方法会有风险,并且也已经准备好要处理......
  • 学习笔记 之 简单了解有关 CSS 那点事儿
    LZ-Says:调整心态,多读书,丰富内心,提升个人文化底蕴。前言前几天,初步了解了下HTML相关的知识点,在学习回顾时,还好,大部分都在,只是新增了一些其他内容,例如自适应等等。上手......