当前位置: 首页 > 工具软件 > whale > 使用案例 >

Android中免root的hook框架学习——whale(一)下载和基本介绍

张俊茂
2023-12-01

本文是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

 类似资料: