Android使用 Java 反射实现 API Hook
文章内容来自https://www.jianshu.com/p/4f6d20076922
博客主要起到学习和记录的作用
直接贴代码了
private void hookOnClickListener(View view) {try {// 得到 View 的 ListenerInfo 对象//得到getListenerInfo方法Method getListenerInfo = View.class.getDeclaredMethod("getListenerInfo");getListenerInfo.setAccessible(true);//得到ListenerInfo变量Object listenerInfo = getListenerInfo.invoke(view);// 得到 原始的 OnClickListener 对象//获取指定类Class<?> listenerInfoClz = Class.forName("android.view.View$ListenerInfo");//获取类中的变量Field mOnClickListener = listenerInfoClz.getDeclaredField("mOnClickListener");mOnClickListener.setAccessible(true);View.OnClickListener originOnClickListener = (View.OnClickListener) mOnClickListener.get(listenerInfo);// 用自定义的 OnClickListener 替换原始的 OnClickListenerView.OnClickListener hookedOnClickListener = new HookedOnClickListener(originOnClickListener);mOnClickListener.set(listenerInfo, hookedOnClickListener);} catch (Exception e) {KLog.w("hook clickListener failed!", e);}}class HookedOnClickListener implements View.OnClickListener {private View.OnClickListener origin;HookedOnClickListener(View.OnClickListener origin) {this.origin = origin;}@Overridepublic void onClick(View v) {Toast.makeText(FeedbackActivity.this, "hook click", Toast.LENGTH_SHORT).show();KLog.i("Before click, do what you want to to.");if (origin != null) {origin.onClick(v);}KLog.i("After click, do what you want to to.");}}
使用
mTvQQ.setOnClickListener(this);hookOnClickListener(mTvQQ);
Android使用 Java 反射实现 API Hook相关推荐
- Java反射机制API
实现 Java 反射机制的类都位于 java.lang.reflect 包中,java.lang.Class 类是 Java 反射机制 API 中的核心类. java.lang.Class 类 jav ...
- Android利用Java反射获取用户手机的rom定制系统及版本,EMUI,MIUI,ColorOS,FunthouchOS等
Android利用Java反射获取用户手机的rom定制系统版本及版本号,EMUI,MIUI,ColorOS,FunthouchOS等 前言 正文 结语 前言 现在手机厂商都推出了自己的基于Androi ...
- java反射机制(三)---java的反射和代理实现IOC模式 模拟spring
IOC(Inverse of Control)可翻译为"控制反转",但大多数人都习惯将它称为"依赖注入".在Spring中,通过IOC可以将实现类.参数信息等配 ...
- Java反射示例教程
Java反射示例教程 Java Reflection提供检查和修改应用程序的运行时行为的能力.Java中的反射是核心java的一个先进主题.使用java反射我们可以检查一个类,在运行时接口,枚举,获取 ...
- 安卓逆向-new-sec6-4 Java反射相关知识以及平头哥框架hook构造函数 | App发布测试版本感染
反射机制 app加上这个属性,也能发布测试版本,被成功感染,无需签名和发布那个release版本 APP是E:\1A_androidstudio_project\course4 插件是E:\1A_an ...
- Java、Android基础之—反射
前言 写这篇文章原因之一,是因为之后会对一些Android第三方框架进行分析.虽不能达到完全清晰,但大体的涉及知识需明白. 反射概述 反射是框架设计的灵魂.(使用的前提条件:必须先得到代表的字节码的C ...
- Java反射机制及API使用
原文地址 反射简单来说,就是动态加载对象,并对对象进行剖析.在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道并获取这个类的所有属性和方法. Java反射机制的作用: 在运行时判断任意 ...
- java 反射api_反射是最重要的Java API
java 反射api 前几天我在想-这是最重要的Java API. 哪种SE和EE API可以使大多数Java生态系统成为可能,而哪些API不能重新创建为第三方库. 正如您可能已经猜到标题一样,我认为 ...
- java反射api研究_深入研究Java 8中的可选类API
java反射api研究 作为Java程序员,我们所有人都经历了以下情况:我们调用一个方法来获取某个值,然后代替直接对返回值调用某些方法,我们首先必须检查返回值是否不为null,然后在返回值. 这是像G ...
最新文章
- finished with exit code -1073740791 (0xC0000409)
- 【01】网页中清除历史浏览记录能不能彻底删除浏览记录?
- 对php的感受100字_最新2020个人年终工作总结开头范文100字
- python t t_Python ttable包_程序模块 - PyPI - Python中文网
- Transformer10个重要问题
- 如何看待EMNLP2021 best paper? 邱锡鹏教授:以为走错会场了
- java设计模式(八) 适配器模式
- pache tomcat慢速HTTP拒绝服务攻击安全问题解决办法
- 机器学习基础(十五)—— blending
- Ubuntu安装Tensorflow及anaconda环境下使用TensorFlow
- WCF系列教程之WCF服务宿主与WCF服务部署
- matlab中牛顿迭代程序,牛顿迭代法的MATLAB程序
- 用JavaSocket编程开发聊天室,附超详细注释
- VMware Workstation12安装win 7企业版激活
- speedoffice(Excel)如何隐藏编辑栏
- CTO、技术总监、首席架构师的区别
- 数字电路(4)门电路(三)
- Google云存储服务GDrive再度浮出水面
- 2022当代科学技术前沿知识 课后测试
- python spacy 安装超时_安装spacy失败
热门文章
- 利用蜘蛛盘问qushi链接
- 跨境电商:外贸新风口?亚马逊测评大揭秘,深度解析!
- 使用linux系统别名配置git别名
- 最新云核泛目录自带MIP模板开源站群系统源码
- 企业使用CRM客户关系管理系统的四大理由
- 分布式架构--两阶段提交和三阶段提交
- 【ML06】Learning Rate 学习率
- jvm crash 的原因以及解决办法
- 湖北师范学院计算机考研清华,博士生考试_实属罕见:一个学院竟有11人考取清华大学硕士_沪江英语...
- 计算机二级会计电算word,计算机二级考试真题-Word-小刘-会计电算化节节高升