{"id":27498319,"url":"https://github.com/axhlzy/il2cpphookscripts","last_synced_at":"2025-05-15T09:03:18.252Z","repository":{"id":37633472,"uuid":"286675128","full_name":"axhlzy/Il2CppHookScripts","owner":"axhlzy","description":"frida-based libil2cpp.so runtime parsing script","archived":false,"fork":false,"pushed_at":"2024-10-29T09:23:38.000Z","size":31356,"stargazers_count":526,"open_issues_count":2,"forks_count":167,"subscribers_count":19,"default_branch":"ts","last_synced_at":"2024-10-29T11:40:37.530Z","etag":null,"topics":["frida","hook","il2cpp","unity"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/axhlzy.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-11T07:24:28.000Z","updated_at":"2024-10-29T09:23:41.000Z","dependencies_parsed_at":"2023-02-19T15:00:23.941Z","dependency_job_id":"c94cbfc4-ba55-424b-a49b-ae92243479b7","html_url":"https://github.com/axhlzy/Il2CppHookScripts","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axhlzy%2FIl2CppHookScripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axhlzy%2FIl2CppHookScripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axhlzy%2FIl2CppHookScripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axhlzy%2FIl2CppHookScripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/axhlzy","download_url":"https://codeload.github.com/axhlzy/Il2CppHookScripts/tar.gz/refs/heads/ts","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249326182,"owners_count":21251735,"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":["frida","hook","il2cpp","unity"],"created_at":"2025-04-17T08:31:36.739Z","updated_at":"2025-04-17T08:31:37.496Z","avatar_url":"https://github.com/axhlzy.png","language":"TypeScript","readme":"## Il2cppHook\n\n### frida-based libil2cpp.so runtime parsing script\n\n[**简体中文**](README.zh-CN.md)\n\n[![npm license](https://img.shields.io/npm/l/il2cpp-hooker.svg)](https://www.npmjs.com/package/il2cpp-hooker)\n![Build Status](https://github.com/axhlzy/Il2CppHookScripts/actions/workflows/Auto-build.yml/badge.svg)\n[![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers\u0026message=Open\u0026color=blue\u0026logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/axhlzy/Il2CppHookScripts)\n[![npm version](https://img.shields.io/npm/v/il2cpp-hooker.svg)](https://www.npmjs.com/package/il2cpp-hooker)\n[![npm downloads](https://img.shields.io/npm/dm/il2cpp-hooker.svg)](https://www.npmjs.com/package/il2cpp-hooker)\n\n#### Features \n\n- Parse Unity's method `m` / class `c` / field `f` / instance `lfs` / `lfp`\n- parse runtime method argument `b` / `bt` / nop function `n` / detachAll and clean cache `D`\n- (Batch) Hook `B/BF/BN` for commonly used functions, modify function return value `setFunctionXXX`, `setActive` to set gameobject active\n- Wrapped \"Interceptor.attach\" to make it easier to use from the command line `A(ptr,(args)=\u003e{},(ret)=\u003e{})`\n- More convenient to find function `findMethods` / `findClasses` and call function `callFunction` / `findExport` to find exports function\n- `showMethodInfo` help us to Simply get the details of an Il2cppMethod*, and getting the details of a game object use`showGameObject` \n- Object hierarchy `PrintHierarchy` / type hierarchy `showTypeParent`\n- Disassemble `showAsm` with frida and method information, `seeHexA` means hexdump\n- `breakWithStack` More symbol parsing for il2cpp, `breakWithArgs` just show args\n- Commonly used Hook package `HookOnPointerClick` / `HookSetActive` / `B_Button` / `HookPlayerPrefs` soon ...\n- Parse mount script `showComponents` alias `PrintHierarchyWithComponents` is also introduced !not alway work!\n- JNI RegisterNatives Hook (impl in JNIHelper, default off [not stable]), using JNIHelper.cacheRegisterNativeItem to get info !testing!\n- Using QBDI to simulate the execution of the function, using t(methoinfo) or traceFunction(mPtr) to enable replacement hook !testing!\n- :confused: :confused: :confused:\n\n-------\n\n#### Install\n```sh\n$ npm install il2cpp-hooker -g\n```\n\nthen you can use like this :point_down:\n\n1. frida attch current app\n```sh\n$ fat\n\n```\n2. frida spawn app of ${PackageName}\n```sh\n$ fat ${PackageName}\n```\n\n3. Command line options\n```sh\n$ fat -h\n\n        _ _  ______                        _                 _\n        | | |(_____ \\                      | |               | |\n        | | |  ____) )____ ____  ____ _____| |__   ___   ___ | |  _ _____  ____\n        | | | / ____// ___)  _ \\|  _ (_____)  _ \\ / _ \\ / _ \\| |_/ ) ___ |/ ___)\n        | | || (____( (___| |_| | |_| |    | | | | |_| | |_| |  _ (| ____| |\n        |_|_|\\______)____)  __/|  __/     |_| |_|\\___/ \\___/|_| \\_)_____)_|\n                        |_|   |_|\n\n\nUsage: fat [options] \u003cpackage-name?\u003e\n\nOptions:\n  -h, --help                  Print usage information.\n  -r, --runtime [engine]      Specify the JS engine (qjs, v8). Default: v8\n  -t, --timeout [ms]          Specify the time in milliseconds before calling the function.\n  -f, --functions [name]      Specify the functions to call on startup. example: -f getApkInfo();\n  -l, --log [path]            Specify the path to save the log.\n  -c, --vscode                Open project with vscode.\n  -v, --version               Print version information.\n\nReport bugs to:\n   axhlzy \u003caxhlzy@live.cn\u003e (https://github.com/axhlzy/Il2CppHookScripts/)\n\n```\n\n-------\n\n[\u003cimg src=\"https://github.com/codespaces/badge.svg\" title=\"Open in Github Codespace\"\u003e](https://codespaces.new/axhlzy/Il2CppHookScripts)\n\n#### Compile\n```sh\n$ git clone https://github.com/axhlzy/Il2CppHookScripts.git\n$ cd Il2cppHook/\n\n$ npm install\n\n$ npm run build \u0026 npm run compress\nOR\n$ npm run watch\n\n$ frida -U -f com.xxx.xxx -l ../_Ufunc.js\nOR\n$ frida -FU -l ../_Ufunc.js\n```\n\n-------\n\n#### 👇 Here's a simpler way to use it (Recommended)\n`frida --codeshare axhlzy/il2cpphookscripts  -U -f ${PackageName}`\n\n\u003e Requires Scientific Internet Access\n\n-------\n\n\u003e [!NOTE]\n\u003e The npm package may not be updated in time, so you may consider using `fat -c` to open the project and use the `github action` [Artifacts](https://github.com/axhlzy/Il2CppHookScripts/actions) to replace _Ufunc.js file. :hushed:\n\n-------\n\n#### API\n\n[More details](https://github.com/axhlzy/Il2CppHookScripts/wiki)\n\nOR\n\nopen with vscode and search `globalthis.` to find more useage\n\n-------\n\nBuy the author a cup of coffee (^_^)\n\n\u003cimg src=https://github.com/axhlzy/Il2CppHookScripts/assets/20512058/618a0674-e5ad-4c0f-9435-f7e133d4b293 width=\"300\" height=\"400\"\u003e\n\n\u003c!-- qq:597290673 --\u003e\n\u003c!-- wx:axhlzy0922 --\u003e\n\u003c!-- tg:axhlzy --\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxhlzy%2Fil2cpphookscripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxhlzy%2Fil2cpphookscripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxhlzy%2Fil2cpphookscripts/lists"}