{"id":13481090,"url":"https://github.com/asLody/whale","last_synced_at":"2025-03-27T11:31:45.510Z","repository":{"id":47600849,"uuid":"167760143","full_name":"asLody/whale","owner":"asLody","description":"Hook Framework for Android/IOS/Linux/MacOS","archived":false,"fork":false,"pushed_at":"2020-12-13T06:13:57.000Z","size":2684,"stargazers_count":1595,"open_issues_count":50,"forks_count":338,"subscribers_count":80,"default_branch":"master","last_synced_at":"2025-03-25T08:01:54.559Z","etag":null,"topics":["android","hook-framework","inline-hook","ios","jit"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asLody.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-27T02:09:57.000Z","updated_at":"2025-03-22T09:36:43.000Z","dependencies_parsed_at":"2022-09-24T11:21:32.227Z","dependency_job_id":null,"html_url":"https://github.com/asLody/whale","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asLody%2Fwhale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asLody%2Fwhale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asLody%2Fwhale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asLody%2Fwhale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asLody","download_url":"https://codeload.github.com/asLody/whale/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245836215,"owners_count":20680335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","hook-framework","inline-hook","ios","jit"],"created_at":"2024-07-31T17:00:48.589Z","updated_at":"2025-03-27T11:31:45.474Z","avatar_url":"https://github.com/asLody.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# Whale\n![logo][0]\n\n[Chinese Version](https://github.com/asLody/whale/blob/master/README.zh-CN.md)\n\n[![license](http://img.shields.io/badge/license-Apache2.0-brightgreen.svg?style=flat)](https://github.com/alibaba/atlas/blob/master/LICENSE)\n## Overview\nWhale is a cross-platform Hook Framework, allowed to run *Android、IOS、Linux、MacOS*.\nWhale support both **ARM/THUMB, ARM64, X86, X86_64 (AMD64)**, This covers almost all the major devices available today.\n\n## Feature\n#### Android\n* **Xposed-Style** Method Hook\n* Modify the inheritance relationship between classes at runtime\n* Modifies the class to which the object belongs at runtime\n* bypass `Hidden API Policy`\n\n#### Darwin/Linux Platforms\n* Internal symbol resolver\n* Native Hook\n\n#### IOS Restrictions\nInlineHook on IOS is only usable in `debug compile mode` on non-jailbreak devices.\nRelease compilation mode will not work properly.\n\nTo solve this problem，Whale will provide a new core named `Binary Static Inline Hook`.\n\n`Binary Static Inline Hook` will open source in the near future.\n\n\n## What can you do with it?\n* Turn on the god mode of an app\n* The act of monitoring or tampering with app\n* Instant hotfix\n* SandBox\n* Inject to system and instead of Xposed\n\n## Compatibility\n- [x] Android 5.0.0\n- [x] Android 5.1.1\n- [x] Android 6.0\n- [x] Android 6.0.1\n- [x] Android 7.1.2\n- [x] Android 8.1.0\n- [x] Android 9.0.0\n- [x] IOS 11.3\n- [x] IOS 12.0\n- [x] MacOS mojave (10.14)\n- (Not in the list means `untested` ）\n\n## InlineHook\nFor `pcrel instruction`, Whale will convert it to `pc-independent instruction`，\nIf the Hook procedure have not convert instructions, please feedback to ` issue `.\n\n## About Jit\nWhale has a `built-in Jit Engine`, When you have more advanced Hook requirements, you can directly **generate executable instructions** in memory through the Jit.\nThere is no longer the need to generate ugly hard code through tools as before.\n\n## Compile\nWe have pre-built binary versions of Android \u0026 IOS. You can find them in the built directory.\n\nWhale uses CMake to build projects, so you need to install CMake on your system.\n\n#### Android\n1. If you need to use ` Java Hook ` please copy java folder to your project.\n\n2. Direct use of binary，You just copy the files under `built/Android` to `src/main/jniLibs` in your project.\n\n3. If you need to compile the source code, specify `CMakeLists.txt` in build.gradle:\n```\nexternalNativeBuild {\n  cmake {\n      path \"your/whale/path/CMakeLists.txt\"\n  }\n}\n```\n\n#### IOS\n```\ncd toolchain\n\ncmake .. \\\n-DCMAKE_TOOLCHAIN_FILE=ios.toolchain.cmake \\\n-DIOS_PLATFORM=OS64 \\\n-DPLATFORM=IOS \\\n-DIOS_ARCH=arm64 \\\n-DENABLE_ARC=0 \\\n-DENABLE_BITCODE=0 \\\n-DENABLE_VISIBILITY=0 \\\n-DIOS_DEPLOYMENT_TARGET=9.3 \\\n-DSHARED=ON \\\n-DCMAKE_BUILD_TYPE=Release\n\nmake -j4\n```\n\n#### Ohter platforms\n```\ncmake .\nmake -j4\n```\n\n## Technogy communication\n\u003e [GOTO =\u003e Discord](https://discord.gg/j2Cdy2g)\n\n\u003e Email: imlody@foxmail.com\n\n\n[0]: https://github.com/asLody/whale/blob/master/LOGO.png?raw=true\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FasLody%2Fwhale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FasLody%2Fwhale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FasLody%2Fwhale/lists"}