本文是whale的基本介绍,下一篇将介绍实战demo
项目地址:https://github.com/asLody/whale
以下内容来自whale项目README的介绍
Whale是一个跨平台的Hook Framework,同时支持Android、IOS、Linux、MacOS。 Whale 支持ARM/THUMB、ARM64、X86、X86_64 (AMD64),这几乎覆盖了目前所有主流的设备。
Xposed-Style Method Hook
运行时修改类之间的继承关系
修改对象所属的类
绕过Hidden API Policy
Internal symbol resolver
Native Hook
IOS的InlineHook在非越狱设备上只限在debug编译模式下开启, release编译模式下将无法正常工作。
为了解决这个问题,Whale将提供Binary Static Inline Hook。
IOS下的Binary Static Inline Hook将在近期开源。
开启App的上帝模式
监控或篡改软件的行为
即时生效的热修复
SandBox
注入到系统代替Xposed
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)
(不在清单内表示 未测试 )
对于pcrel指令, Whale会将其转换为pc 无关指令, 如果在Hook过程有遇到未转换的指令,请提issue。
Whale内置了 Jit Engine, 当你有更高级的Hook需求时可以通过Jit直接在内存中生成可执行的指令。 不再需要像从前那样通过工具来生成丑陋的hard code。
我们已提前编译了Android & IOS的二进制版本,您可以在built目录找到它们。
Whale使用了CMake来构建项目,所以你需要在你的系统上安装CMake。
Android
如果需要使用Java Hook, 请把java文件夹的代码复制到你的项目。
直接使用二进制,你只需要复制 built/Android 下你所需的abi到你的项目的src/main/jniLibs下。
如果需要编译源码,请在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