{"id":13694862,"url":"https://github.com/android-hacker/exposed","last_synced_at":"2025-05-16T01:06:06.568Z","repository":{"id":41309045,"uuid":"112717684","full_name":"android-hacker/exposed","owner":"android-hacker","description":"A library to use Xposed without root or recovery(or modify system image etc..).","archived":false,"fork":false,"pushed_at":"2021-12-01T07:28:01.000Z","size":2270,"stargazers_count":1543,"open_issues_count":5,"forks_count":262,"subscribers_count":89,"default_branch":"master","last_synced_at":"2025-04-08T11:16:23.348Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/android-hacker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-01T08:58:13.000Z","updated_at":"2025-04-04T21:38:04.000Z","dependencies_parsed_at":"2022-08-19T17:21:45.063Z","dependency_job_id":null,"html_url":"https://github.com/android-hacker/exposed","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/android-hacker%2Fexposed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/android-hacker%2Fexposed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/android-hacker%2Fexposed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/android-hacker%2Fexposed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/android-hacker","download_url":"https://codeload.github.com/android-hacker/exposed/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254448579,"owners_count":22072764,"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":[],"created_at":"2024-08-02T17:01:45.771Z","updated_at":"2025-05-16T01:06:01.558Z","avatar_url":"https://github.com/android-hacker.png","language":"Java","funding_links":[],"categories":["Java","\u003ca id=\"2110ded2aa5637fa933cc674bc33bf21\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"7f353b27e45b5de6b0e6ac472b02cbf1\"\u003e\u003c/a\u003eXposed"],"readme":"# 简介\n\nexposed 致力于为App提供 Xposed 运行环境。基本思路是劫持APP进程启动的入口，加载 Xposed 插件以及 hook框架 [epic](https://github.com/tiann/epic) 。\n\nexposed本质上是一个 Xposed 与 APP进程 之间的兼容层，它给Xposed模块提供运行环境（如插件加载、hook环境等）。\n\n目前使用最广泛的实现是 VirtualXposed，它使用 [VirtualApp](https://github.com/asLody/VirtualApp) 来运行APP并提供进程入口劫持。但是，exposed 本身并不依赖双开宿主；甚至不需要双开。\n\n另外，基于APP加固的思路，甚至直接修改APK，或者通过magisk注入进程的方式，都可以实现 Xposed。\n\n目前有以下几种实现方式：\n\n- [VirtualXposed](https://github.com/android-hacker/VirtualXposed) ：基于双开实现，通过 VirtualApp 运行目标APK，在进程启动入口加载 exposed。优势：免安装，无篡改签名问题。劣势：性能 \u0026 稳定性受限于双开，无法与系统完全交互。\n- [太极](https://www.coolapk.com/apk/me.weishu.exp)：基于修改APK实现。在 Application 类的入口织入 exposed 入口代码，从而加载 exposed。优势：可以与系统完全交互，性能好。劣势：签名改变，虽有独特技术可以绕过所有检测，但是依然有风险。部分APP调用其他会检测签名，使得所有APP必须被“太极化”，风险极高。\n- [太极·Magisk](https://mp.weixin.qq.com/s?__biz=MjM5Njg5ODU2NA==\u0026tempkey=OTkwX0JJa0I4ZW9qcmd5bGlJSXlwQjBJOTZsWGc0TllULXVXdGVicTQxcWRyWE9McnZFQVozRGpNS21OaHEySDNHbFlfMUVudk9wbHo0akE4c29hOTZhNGs5UENXQlFISlFvQjZFSS1CT1dCa1hSZWt4XzFKNV9abEZITTJNOEJkVkotVEdrN2owcmxzeU9WVF9oaVUxdlJwd3pkcHZDWXFPOTFNVEhBeUF%2Bfg%3D%3D\u0026chksm=25983cf012efb5e6ac3fe06bd73883139a89912fa37aee74f3b3baca9e358b2c41a260cee682#rd)：通过 Magisk 修改系统文件，在 Zygote 进程启动的时候执行 exposed 入口代码，从而加载 exposed。优势：完全体，不存在上述所有问题。劣势：需要解锁Bootloader和刷机。\n\n# 使用\n\nExposed 是一个library，是提供给开发者使用的；如果你需要在非ROOT环境下运行Xposed，请移步项目 [VAExposed](https://github.com/android-hacker/VAExposed)\n\n如果需要在APP进程中中提供Xposed运行环境，在进程启动的入口，执行如下调用即可：\n\n```java\nExposedBridge.initOnce(context, applicationInfo, appClassLoader);\n```\n\n同时，为了加载Xposed模块，需要在进程启动的时候执行模块加载：\n\n```java\nExposedBridge.loadModule(moduleApk, apkOdexDir, moduleLibDir, applicationInfo, appClassLoader);\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandroid-hacker%2Fexposed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandroid-hacker%2Fexposed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandroid-hacker%2Fexposed/lists"}