Android中免root的hook框架學習——whale(一)下載和基本介紹

本文是whale的基本介紹,下一篇將介紹實戰demo

 

項目地址:https://github.com/asLody/whale

以下內容來自whale項目README的介紹

一、概述

Whale是一個跨平臺的Hook Framework,同時支持Android、IOS、Linux、MacOS。 Whale 支持ARM/THUMB、ARM64、X86、X86_64 (AMD64),這幾乎覆蓋了目前所有主流的設備。

二、特性

Android

  • Xposed-Style Method Hook

  • 運行時修改類之間的繼承關係

  • 修改對象所屬的類

  • 繞過Hidden API Policy

Darwin/Linux Platforms

  • Internal symbol resolver

  • Native Hook

IOS的限制

IOS的InlineHook在非越獄設備上只限在debug編譯模式下開啓, release編譯模式下將無法正常工作。

爲了解決這個問題,Whale將提供Binary Static Inline Hook。

IOS下的Binary Static Inline Hook將在近期開源。

你可以用它做什麼?

  • 開啓App的上帝模式

  • 監控或篡改軟件的行爲

  • 即時生效的熱修復

  • SandBox

  • 注入到系統代替Xposed

Whale的兼容性

  •  Android 5.0.0

  •  Android 5.1.1

  •  Android 6.0

  •  Android 6.0.1

  •  Android 7.1.2

  •  Android 8.1.0

  •  Android 9.0.0

  •  IOS 11.3

  •  IOS 12.0

  •  MacOS mojave (10.14)

  • (不在清單內表示 未測試 )

InlineHook

對於pcrel指令, Whale會將其轉換爲pc 無關指令, 如果在Hook過程有遇到未轉換的指令,請提issue。

關於Jit

Whale內置了 Jit Engine, 當你有更高級的Hook需求時可以通過Jit直接在內存中生成可執行的指令。 不再需要像從前那樣通過工具來生成醜陋的hard code。

編譯

我們已提前編譯了Android & IOS的二進制版本,您可以在built目錄找到它們。

Whale使用了CMake來構建項目,所以你需要在你的系統上安裝CMake。

Android

  1. 如果需要使用Java Hook, 請把java文件夾的代碼複製到你的項目。

  2. 直接使用二進制,你只需要複製 built/Android 下你所需的abi到你的項目的src/main/jniLibs下。

  3. 如果需要編譯源碼,請在build.gradle中指定CMakelists.txt:

externalNativeBuild {

cmake {

path "your/whale/path/CMakeLists.txt"

}

}

IOS

cd toolchain

 

cmake .. \

-DCMAKE_TOOLCHAIN_FILE=ios.toolchain.cmake \

-DIOS_PLATFORM=OS64 \

-DPLATFORM=IOS \

-DIOS_ARCH=arm64 \

-DENABLE_ARC=0 \

-DENABLE_BITCODE=0 \

-DENABLE_VISIBILITY=0 \

-DIOS_DEPLOYMENT_TARGET=9.3 \

-DSHARED=ON \

-DCMAKE_BUILD_TYPE=Release

 

make -j4

Ohter platforms

cmake .

make -j8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章