【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,同时还支持注解注入。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值