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其餘第三方應用的目的,在以後的文章將詳述實現過程。感謝。