Skip to content

Latest commit

 

History

History
105 lines (81 loc) · 2.48 KB

README.zh-CN.md

File metadata and controls

105 lines (81 loc) · 2.48 KB

Whale

logo

概述

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

Technogy communication

QQ Group: 977793836