【VirtualAPP 双开系列03】动态代理-hook系统服务(Java层)
目录:
- 1. Hook 简述
- 2. VirtualAPP Java Hook 类图
- 3. VirtualAPP Java Hook 实例 (ActivityManagerService)
1. Hook 简述
我们先来了解下 hook.
(1) 什么是 Hook
Hook 又叫“钩子”,它可以在事件传送的过程中截获并监控事件的传输,将自身的代码与系统方法进行融入。这样当这些方法被调用时,也就可以执行我们自己的代码,这也是面向切面编程的思想(AOP)。
(2) Hook 分类
(3) Hook 框架
大体分为以下两种:
- 要 root 权限,直接 Hook 系统,可以干掉所有的 App。
- 免 root 权限,但是只能 Hook 自身,对系统其它 App 无能为力。
在 Android 开发中,有以下常见的一些 Hook 框架:
(4) Hook 需要掌握的知识点
- 反射
- java 的动态代理
(5) Hook 的缺点
- 需要做大量的适配,兼容 Android 版本,稳定性差
- 大量使用反射,影响运行性能
2. VirtualAPP Java Hook 类图
想知道 VirtualAPP 如何 hook 系统服务,在各种系统 service 调用函数时进行拦截处理吗?先来回顾下 framework 的 ServiceManager, 我们要拦截的就是各种服务的调用。
VirtualAPP Java Hook 类图如下:
大致流程如下:
接下来我们以 ActivityManagerService 的 hook 为例,看看具体逻辑。
3. VirtualAPP Java Hook 实例 (ActivityManagerService)
对应的镜像封装类为 ActivityManagerStub:
总结:
简洁的动态代理封装,通过注册动态添加代理方法,去掉 if else,同时还支持注解注入。
【VirtualAPP 双开系列03】动态代理-hook系统服务(Java层)相关推荐
- 【VirtualAPP 双开系列08】如何实现多开 - UID
目录: 1. Android UID 介绍 2. 多开基本原理 3. 常用的多开方案 4. VirtualAPP 如何实现多开 1. Android UID 介绍 Android 系统中修改了 Lin ...
- android hook底层代码_Java-Hook技术-入门实践(反射、动态代理)-Hook拦截通知(当前App/Context)...
老样子,上一篇MonkeyLei:Java-Hook技术-入门实践+反射.动态代理.热修复再看看 我们Hook学习了一下,一个是Java本地Main的实践练习. 一个是Android的监听事件的Hoo ...
- 【VirtualAPP 双开系列02】进程管理
目录: 1. 运行 VirtualAPP,查看进程 2. VirtualAPP 分成四种类型的进程 3. 关于 Stub 4. 关于 ServiceManager 1. 运行 VirtualAPP,查 ...
- 设计一个事务增强的动态代理类, 对持久层的用户的CRUD操作进行事务增强 即:
动态代理类: package com.bj169.invoke;import com.bj169.dao.UserDao; import com.bj169.util.HibernateUtil; i ...
- 利用动态代理来实现DAO层中的方法
动态代理实现接口 动态代理机制是jdk1.3版本以后引入的,在下面我主要用动态代理来实现接口,并且用注释来代替查询语句注释 DAO方法如下 package com.yf.dao;import java ...
- 动态代理/spring IOC/JAVA反射机制
动态代理 代理的作用就是控制对象的访问权限: 首先我们需要写一个接口 这个就是代理接口 public interface Student { public void S1(); } 然后在写一个接口的 ...
- 【VirtualAPP 双开系列04】VirtualAPP 可扩展 AIDL 分析
目录: 1. 什么是 AIDL? 2. 为什么要用 AIDL? 3. VirtualAPP AIDL 使用 4. IPC 总线(IPCBus)动态扩展 5. 总结 1. 什么是 AIDL? AIDL: ...
- 【VirtualAPP 双开系列07】第三方 APP Service、Provider 加载分析
目录: 1. Service 加载分析 2. Provider 加载分析 1. Service 加载分析 2. Provider 加载分析
- 狂神说Spring讲解第19动态代理中错误java: 不兼容的类型: com.Orac.kuang.Host无法转换为com.kuang.demo3.Rent
java: 不兼容的类型: com.Oracle.demo3.Host无法转换为com.Oracle.demo3.Rent 解决方法: Clinet: package com.Oracle.demo3 ...
最新文章
- oracle rpad mysql_Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析
- Java处理excel根据某列的值查询,并将结果显示在其他列中
- POJ 2728 最优比率生成树
- 《Effective Java》—— 对于所有对象都通用的方法
- 根据Web服务器的记录来追踪黑客(转)
- vim命令杂烩(复制粘贴、建文件、撤销等)
- 追影windows7 虚拟4桌面
- 6个最佳的开源Python应用服务器
- CPU-AMD处理器的驱动下载地址
- opencv获取人脸眼镜位置_用opencv检测人眼并定位瞳孔位置
- python notebook右侧网页_Python Notebook介绍
- weblogic for linux 下载,weblogic for linux安装
- linux rz sz使用
- echarts拖拽echarts实现多条可拖动节点的折线图
- java 根据已有ppt模板修改其内容
- 亭子早期博客中16进制颜色值地址
- Win11dns解析状态异常怎么处理?Win11dns解析失败解决方法
- php获取应用宝app下载连接
- 如何下载在线课程网站的视频
- 如何用纯 CSS 创作一只愤怒小鸟中的绿猪
热门文章
- Android清空Fragment缓存,如何在Android中清除Fragment Backstack
- 【开源电路】STM32F401RCT6开发板
- 0 地道英语口语/发音 | 高效提升攻略
- 生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...
- 七天编写指标_操盘线指标公式源码(七天线 工作线 生命线)[通达信公式
- Android中文开发教程()
- mt6572 开发板环境建立笔记
- 零基础转行成功的前辈写给测试新手的话
- Google Translate
- php如何制作视频特效,视频特效怎么弄 给视频加一个主题样式,简单几步制作出属于自己风格的独特视频...