A. 原理简述:
如今市场上常见的虚拟多开应用主要是基于虚拟化技术实现,而虚拟化技术主要经过 Hook 技术实现,所以咱们主要考察 Hook 技术。
按 Java 层 与 Native 层分类, Hook 技术能够分为 Java 层的 Hook 与 Native 层的 Hook。根据代码的运行环境,Java层的 Hook 能够分为 Dalvik Hook 与 ART Hook。根据 ELF 文件的特色,Native层的 Hook 能够分为基于动态库加载劫持的 LD_PRELOAD Hook、针对 .got.plt 节区的 GOT Hook 及针对汇编指令级别的 Inline Hook。
Hook技术主要分为五类:
a. Dalvik Hook;
b. ART Hook;
c. LOAD_PRELAD Hook;
d. GOT Hook;
e. Inline Hook;
已有的Hook框架:
a. Xposed(支持Java层的 Dalvik Hook 和 ART Hook,但不支持 Native 层的 Hook)
b. legend(支持Java层的 Dalvik Hook 和 ART Hook)
c. whale(跨平台的Hook框架,支持Java层的 Dalvik Hook 和 ART Hook)
VirtualApp 采用了 Hook技术实现了在Android平台上的沙盒环境(容器),达到能够彻底控制 其内运行的App的目的。
B. 实践
笔者主要看了 weishu 和 lody 对该技术的研究以及实现,所以主要讲这两位开发者对该问题的研究和实现。
1) weishu的主要产品是 taichi,其产品发展图以下所示:
2)lody主要产品是 VirtualApp,很是优秀的一款软件,weishu的 VirtualXpose 也是基于 VirtualApp 来实现的。
分析该软件原理的文章很是之多,也很专业,笔者在这里仅列出两篇实践应用的文章,用以实现 基于VirtualApp来hook其余第三方应用。
另:笔者经过借鉴以上两篇文章实现了 基于 VirtualApp 并结合 whale hook框架 来hook其余第三方应用的目的,在以后的文章将详述实现过程。感谢。