一、前言
之前写的 「装X指南之Xposed安装与配置」,有人反馈手机 root 风险较大,而且操作成本高,有没有什么方法是不需要 root 就能够实现 hook 的或者不需要 Xposed 也能玩起插件的?于是就有了这篇文章,离开 Xposed ,带你免 root 实现 hook!
二、VirtualApp
1、关于 VirtualApp 的介绍
VA目前被广泛应用于插件化开发、无感知热更新、自动化、多开等技术领域,但它决不仅限于此,Android本身就是一个极其开放的平台,免安装运行APK这一Feature打开了无限可能-----这都取决于您的想象力。
感谢 asLody 开源,据说他写这个项目才高二,佩服佩服~
2、VirtualApp 的原理
VirtualApp 伪造了一套 framework 代码,实现所有在其进程启动的应用,都运行在一个虚拟空间(注:个人理解,如有错误,还请指出)。
3、VirtualApp 使用问题
Github 上的代码,作者已经没有继续开源更新了,可以看到后续的所有修改,都在作者的商业版上操作,所以有可能在使用上会出现一些 bug。
其实可以看到「商业版」,不管稳定性与兼容性,都做了很大的修复和改动,最重要的是,支持 Dalvik 和 Art 的 Java Hook( API 同 Xposed ),可惜在作者没有公开源码的情况下,我们个人不可能为了学习去购买「商业版」~
特别说明:作者明确指出,如果项目需要投入商业使用,请购买「商业版」。我们这里仅做技术学习使用
4、VirtualHook 介绍
上文说到我们无法使用「商业版」的 VirtualApp ,来进行 Hook ,准确来说是作者没把 Hook 的 Api 公开。
下面我要介绍另一个基于 VirtualApp 改造的项目 —— VirtualHook(区分:VirtualApp 与 VirtualHook 的区别,不要搞混了,后文使用 VirtualHook 来实践),感谢 rk700 开源 VirtualHook 与 YAHFA
1)VirtualHook 项目地址:
2)VirtualHook 构成:
VirtualHook is a tool for hooking application without root permission. It is based on two projects:
VirtualApp. It's a plugin framework which allows running applications in its virtual space.</