├── .gitmodules
├── .gitignore
├── docs
├── public
│ ├── logo.png
│ ├── PButton.png
│ └── favicon.ico
├── zh_CN
│ ├── warn.md
│ ├── support.md
│ ├── index.md
│ ├── what-is-apatch.md
│ ├── rescue-bootloop.md
│ ├── update.md
│ ├── kpm-usage-guide.md
│ ├── faq.md
│ ├── install.md
│ └── apm-guide.md
├── warn.md
├── ru
│ ├── warn.md
│ ├── support.md
│ ├── what-is-apatch.md
│ ├── index.md
│ ├── rescue-bootloop.md
│ ├── update.md
│ ├── kpm-usage-guide.md
│ ├── faq.md
│ ├── install.md
│ └── apm-guide.md
├── pt_BR
│ ├── support.md
│ ├── warn.md
│ ├── index.md
│ ├── what-is-apatch.md
│ ├── update.md
│ ├── rescue-bootloop.md
│ ├── kpm-usage-guide.md
│ ├── faq.md
│ ├── install.md
│ └── apm-guide.md
├── support.md
├── .vitepress
│ ├── config.ts
│ └── locales
│ │ ├── index.ts
│ │ ├── zh_CN.ts
│ │ ├── ru.ts
│ │ ├── en.ts
│ │ └── pt_BR.ts
├── index.md
├── what-is-apatch.md
├── rescue-bootloop.md
├── update.md
├── kpm-usage-guide.md
├── .gitignore
├── faq.md
├── install.md
└── apm-guide.md
├── package.json
├── .github
├── dependabot.yml
└── workflows
│ └── deploy.yml
├── README.md
└── LICENSE
/.gitmodules:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | /.vitepress
3 | !/.vitepress/config.mjs
4 |
--------------------------------------------------------------------------------
/docs/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndroidPatch/APatchDocs/HEAD/docs/public/logo.png
--------------------------------------------------------------------------------
/docs/public/PButton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndroidPatch/APatchDocs/HEAD/docs/public/PButton.png
--------------------------------------------------------------------------------
/docs/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndroidPatch/APatchDocs/HEAD/docs/public/favicon.ico
--------------------------------------------------------------------------------
/docs/zh_CN/warn.md:
--------------------------------------------------------------------------------
1 | # 重要提醒
2 |
3 | ::: info
4 | **SuperKey 的权限高于 root 访问权限。**
5 | ::: info
6 | 使用强密钥并保护它们免受暴露以维护设备的安全。
7 | ::: warning
8 | 弱密钥或泄露密钥可能导致未经授权的设备控制。
9 | :::
10 | ::: danger
11 | **不要刷入他人修补的内核。**
12 | :::
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "scripts": {
3 | "docs:dev": "vitepress dev docs",
4 | "docs:build": "vitepress build docs",
5 | "docs:preview": "vitepress preview docs"
6 | },
7 | "type": "module",
8 | "devDependencies": {
9 | "vitepress": "^1.6.4"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/docs/warn.md:
--------------------------------------------------------------------------------
1 | # Security alert
2 |
3 | ::: info
4 | **The SuperKey has higher privileges than root access.**
5 | ::: info
6 | Use strong keys and protect them from exposure to maintain device security.
7 | ::: warning
8 | Weak or compromised keys can lead to unauthorized control of your device.
9 | :::
10 | ::: danger
11 | **DO NOT FLASH ANY KERNEL PATCHED BY THIRD-PARTIES.**
12 | :::
13 |
--------------------------------------------------------------------------------
/docs/zh_CN/support.md:
--------------------------------------------------------------------------------
1 | # 反馈与帮助
2 |
3 | ## 项目开发者
4 |
5 | [bmax121](https://github.com/bmax121)
6 |
7 | ## 项目地址
8 |
9 | [APatch](https://github.com/bmax121/APatch)
10 |
11 | [KernelPatch](https://github.com/bmax121/KernelPatch)
12 |
13 | ## 交流群
14 |
15 | [[ZH/EN] [SFW] APatch Discussions](https://t.me/apatch_discuss) (管理较宽松)
16 |
17 | [[SFW] APatch CN](https://t.me/APatch_CN_Group) (仅限中文用户)
18 |
--------------------------------------------------------------------------------
/docs/ru/warn.md:
--------------------------------------------------------------------------------
1 | # Предупреждение
2 |
3 | ::: info
4 | **Суперключ имеет более высокие привилегии, чем root-доступ.**
5 | ::: info
6 | Используйте надежные ключи и защищайте их от воздействия, чтобы обеспечить безопасность устройства.
7 | ::: warning
8 | Слабые или скомпрометированные ключи могут привести к несанкционированному управлению устройством.
9 | :::
10 | ::: danger
11 | **НЕ ПРОШИВАЙТЕ ЯДРА, ПРОПАТЧЕННЫЕ СТОРОННИМИ ЛЮДЬМИ.**
12 | :::
13 |
--------------------------------------------------------------------------------
/docs/pt_BR/support.md:
--------------------------------------------------------------------------------
1 | # Ajuda e suporte
2 |
3 | ## Desenvolvedor do projeto
4 |
5 | [bmax121](https://github.com/bmax121)
6 |
7 | ## Projetos
8 |
9 | [APatch](https://github.com/bmax121/APatch)
10 |
11 | [KernelPatch](https://github.com/bmax121/KernelPatch)
12 |
13 | ## Discussão
14 |
15 | [[ZH/EN] [SFW] APatch Discussions](https://t.me/apatch_discuss)
16 |
17 | [[SFW] APatch CN](https://t.me/APatch_CN_Group) (Apenas para usuários chineses)
18 |
--------------------------------------------------------------------------------
/docs/support.md:
--------------------------------------------------------------------------------
1 | # Help and support
2 |
3 | ## Project developer
4 |
5 | [bmax121](https://github.com/bmax121)
6 |
7 | ## Projects
8 |
9 | [APatch](https://github.com/bmax121/APatch)
10 |
11 | [KernelPatch](https://github.com/bmax121/KernelPatch)
12 |
13 | ## Discussion
14 |
15 | [[ZH/EN] [SFW] APatch Discussions](https://t.me/apatch_discuss)
16 |
17 | [[SFW] APatch CN](https://t.me/APatch_CN_Group) (Only for Chinese users)
18 |
--------------------------------------------------------------------------------
/docs/ru/support.md:
--------------------------------------------------------------------------------
1 | # Обратная связь и помощь
2 |
3 | ## Разработчик проекта
4 |
5 | [bmax121](https://github.com/bmax121)
6 |
7 | ## Проекты
8 |
9 | [APatch](https://github.com/bmax121/APatch)
10 |
11 | [KernelPatch](https://github.com/bmax121/KernelPatch)
12 |
13 | ## Обсуждения
14 |
15 | [[ZH/EN] [SFW] APatch Discussions](https://t.me/apatch_discuss)
16 |
17 | [[SFW] APatch CN](https://t.me/APatch_CN_Group) (Только для китайских пользователей)
18 |
--------------------------------------------------------------------------------
/docs/pt_BR/warn.md:
--------------------------------------------------------------------------------
1 | # Alerta de segurança
2 |
3 | ::: info INFORMAÇÕES
4 | **A SuperKey tem privilégios mais altos que o acesso root.**
5 | ::: info INFORMAÇÕES
6 | Use chaves fortes e proteja-as da exposição para manter a segurança do dispositivo.
7 | ::: warning AVISO
8 | Chaves fracas ou comprometidas podem levar ao controle não autorizado do seu dispositivo.
9 | :::
10 | ::: danger PERIGO
11 | **NÃO FLASH NENHUM KERNEL CORRIGIDO POR TERCEIROS.**
12 | :::
13 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: github-actions
4 | target-branch: main
5 | directory: /
6 | schedule:
7 | interval: daily
8 | groups:
9 | action-dependencies:
10 | patterns:
11 | - "*"
12 |
13 | - package-ecosystem: npm
14 | target-branch: main
15 | directory: /
16 | schedule:
17 | interval: daily
18 | allow:
19 | - dependency-type: "all"
20 | groups:
21 | npm-dependencies:
22 | patterns:
23 | - "*"
24 |
--------------------------------------------------------------------------------
/docs/.vitepress/config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig, SiteConfig } from 'vitepress'
2 | import locales from './locales'
3 | import { readdir, writeFile } from 'fs/promises'
4 | import { resolve } from 'path'
5 | import { defineAsyncComponent } from 'vue'
6 |
7 | export default defineConfig({
8 | title: 'APatch Docs',
9 | locales: locales.locales,
10 | ignoreDeadLinks: true,
11 | lastUpdated: true,
12 | sitemap: {
13 | hostname: 'https://apatch.dev'
14 | },
15 | theme: {
16 | asyncLinks: true // 启用异步模块和链接渲染
17 | },
18 | })
19 |
--------------------------------------------------------------------------------
/docs/zh_CN/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | # https://vitepress.dev/reference/default-theme-home-page
3 | layout: home
4 |
5 | hero:
6 | name: "APatch"
7 | text: "安卓内核 Root 新方案"
8 | tagline: 为 Android 内核 3.18 - 6.1 版本提供的通用 root 方案
9 | image:
10 | src: /logo.png
11 | alt: 背景图片
12 | actions:
13 | - theme: brand
14 | text: 开始了解
15 | link: /zh_CN/what-is-apatch
16 | - theme: alt
17 | text: 在 GitHub 中查看
18 | link: https://github.com/bmax121/APatch
19 | - theme: alt
20 | text: 贡献文档
21 | link: https://github.com/AndroidPatch/APatchDocs
22 |
23 | features:
24 | - title: 基于内核
25 | details: APatch 运行在内核空间,相比用户空间 Root 有更强的隐蔽性和掌控性。
26 | - title: 白名单访问控制
27 | details: 只有被授权的 App 才可以访问 su,而其他 App 无法感知其存在。
28 | - title: APM
29 | details: 类似 Magisk 模块的支持。
30 | - title: KPM
31 | details: 内核补丁模块支持。(允许将任何代码注入内核,内核函数 inline-hook 和 syscall-table-hook 可用)。
32 | ---
33 |
--------------------------------------------------------------------------------
/docs/.vitepress/locales/index.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitepress'
2 | import en from './en'
3 | import ru from './ru'
4 | import pt_BR from './pt_BR'
5 | import zh_CN from './zh_CN'
6 |
7 | export default defineConfig({
8 | locales: {
9 | root: {
10 | label: 'English',
11 | lang: en.lang,
12 | themeConfig: en.themeConfig,
13 | description: en.description,
14 | },
15 | ru: {
16 | label: 'Русский',
17 | lang: ru.lang,
18 | themeConfig: ru.themeConfig,
19 | description: ru.description,
20 | },
21 | pt_BR: {
22 | label: 'Português (Brasil)',
23 | lang: pt_BR.lang,
24 | themeConfig: pt_BR.themeConfig,
25 | description: pt_BR.description,
26 | },
27 | zh_CN: {
28 | label: '简体中文',
29 | lang: zh_CN.lang,
30 | themeConfig: zh_CN.themeConfig,
31 | description: zh_CN.description,
32 | },
33 | },
34 | })
35 |
--------------------------------------------------------------------------------
/docs/ru/what-is-apatch.md:
--------------------------------------------------------------------------------
1 | # Что такое APatch?
2 |
3 | APatch - это основанное на ядре root-решение для Android-устройств, работающее в режиме ядра и предоставляющее root-привилегии пользовательским приложениям непосредственно в пространстве ядра.
4 |
5 | ## Особенности
6 |
7 | Совместимость с большинством устройств Android, не ограничиваясь устройствами с ядром GKI.
8 |
9 | Поддержка APM-модулей (APM), аналогичных модулям Magisk.
10 |
11 | Поддерживает KPModule (KPM), который позволяет внедрить любой код в ядро (Требует включенных функций ядра `inline-hook` и `syscall-table-hook`).
12 |
13 | APatch зависит от KernelPatch.
14 |
15 | Пользовательский интерфейс APatch и исходный код APModule были взяты и модифицированы из KernelSU.
16 |
17 | ## Как использовать APatch?
18 |
19 | Пожалуйста, прочитайте это: [Установка](/ru/install)
20 |
21 | ## Как пропатчить?
22 |
23 | Пожалуйста, прочитайте это: [Патчинг](/ru/install#how-to-patch)
24 |
--------------------------------------------------------------------------------
/docs/zh_CN/what-is-apatch.md:
--------------------------------------------------------------------------------
1 | # 什么是 APatch?
2 |
3 | 适用于 Android 设备的基于内核的 Root 新解决方案,可以工作在内核模式,并直接在内核空间中为用户空间应用程序授予 root 权限。
4 |
5 | ## 特点
6 |
7 | 适用于大部分安卓设备,不仅限于GKI内核设备。
8 |
9 | 提供类似 Magisk 模块的 APM 支持。
10 |
11 | 提供内核补丁模块支持。允许将任何代码注入内核(提供内核函数 `inline-hook` 和 `syscall-table-hook`)。
12 |
13 | APatch 依赖于 KernelPatch。
14 |
15 | APatch 管理器 和 APM 的源代码来自对 KernelSU 管理器 和 KernelSU 的复制和修改。
16 |
17 | ## 如何使用?
18 |
19 | 请参考: [APatch 安装指南](/zh_CN/install)
20 |
21 | ## 如何修补?
22 |
23 | 请参考: [修补](/zh_CN/install#how-to-patch)
24 |
25 | ## 许可
26 | ```
27 | 版权所有 (C) 2023 - 至今 bmax121 和 APatch 开发者
28 |
29 | APatch 是自由软件,你可以在遵守由自由软件基金会发表的 GNU 通用公共许可证(第 3 版)的前提下再分发和/或修改本软件。
30 |
31 | 我们分发该软件的本意是希望其具有实用性,但本软件不附带任何形式的担保,亦不以任何形式保证本软件的适销性或其在特定用途下的适用性。请参阅 GNU 通用公共许可证的文本以了解详情。
32 |
33 | 你应该已经获得了一份随附本软件一同发行的 GNU 通用公共许可证副本,如果没有,请参阅:。
34 | ```
35 |
36 | ## 重要提醒
37 |
38 | APatch 是自由软件,允许任何人在遵守我们使用的 GNU GPLv3 许可证或经过权利人另行许可后创建其自己的分支。
39 |
40 | APatch 的开发者难以做到对每一个 APatch 的发行版进行代码审查(无论其自由与否),而你使用第三方 APatch 发行版时所遇到的任何问题都与 APatch 开发者无关,APatch 开发者也不对任何第三方 APatch 发行版做任何形式的担保。
41 |
42 | 你需要自行向第三方 APatch 发行版的开发者反馈你遇到的问题。
43 |
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | # https://vitepress.dev/reference/default-theme-home-page
3 | layout: home
4 |
5 | hero:
6 | name: "APatch"
7 | text: "New Android kernel root solution"
8 | tagline: Universal root solution for Android kernel versions 3.18 - 6.1
9 | image:
10 | src: /logo.png
11 | alt: APatch
12 | actions:
13 | - theme: brand
14 | text: Get started
15 | link: /what-is-apatch
16 | - theme: alt
17 | text: View on GitHub
18 | link: https://github.com/bmax121/APatch
19 | - theme: alt
20 | text: Contribute to documentation
21 | link: https://github.com/AndroidPatch/APatchDocs
22 |
23 | features:
24 | - title: Kernel-based
25 | details: APatch runs in kernel space and has greater concealment and control than userspace root.
26 | - title: Root access control
27 | details: Only permitted apps may access or see su, all other apps aren't aware of this.
28 | - title: APModule
29 | details: Support for modules similar to Magisk.
30 | - title: KPModule
31 | details: Support for modules that allow you to inject any code into the kernel (Provides kernel function inline-hook and syscall-table-hook).
32 | ---
33 |
--------------------------------------------------------------------------------
/docs/zh_CN/rescue-bootloop.md:
--------------------------------------------------------------------------------
1 | # 救砖
2 |
3 | [[toc]]
4 |
5 | ---
6 |
7 | APatch 内置了一套救砖机制,可以帮助你刷入了错误的模块导致不开机时快速禁用所有模块重新开机。
8 |
9 | :::warning
10 | 这只能帮助你在**刷入了错误模块或模块冲突等导致的无法开机时**帮助你,而**不能帮助你解决被格机、被清空数据等问题!**
11 | :::
12 |
13 | ## 触发机制
14 |
15 | - 音量键救砖
16 |
17 | 在**长按电源键并亮屏后,连续按下-松开直至第一屏亮起**。这样 APatch 内置的安全模式就会被启用,所有的模块将被禁用。
18 |
19 | :::info
20 | APatch 对于音量键的监听范围较大。即使 `post-fs` 已经执行,如果监听到安全模式的信号,APatch 将会撤回在 `post-fs` 阶段所做出的修改。
21 |
22 | 或者说,在 `sys.boot_completed=1` 之前都有效。
23 | :::
24 |
25 | - REC 启动安全模式
26 |
27 | 一些 ROM,比如 MIUI/Xiaomi HyperOS,可以在它们的 Recovery 中打开安全模式。重启到 Recovery 并开启 ROM 自带的安全模式,也会启动 APatch 的安全模式。
28 |
29 | ---
30 |
31 | :::tip
32 | 进入安全模式以后,APatch 管理器的系统模块页面所有模块都将处于禁用状态,但你可以执行“卸载”操作,卸载可能会有问题的模块。
33 | :::
34 |
35 | ## 一些问题
36 |
37 | ### 启用安全模式后系统仍然崩溃
38 |
39 | 可能是撤回 `post-fs` 修改失败导致崩溃,再次强制重启即可解决。
40 |
41 | ### 通过 REC 等方式进入安全模式后没有看到 APatch 管理器
42 |
43 | 此时你的设备应该已经进入了 Android 的安全模式。
44 |
45 | Android 安全模式的规则是:进入安全模式后,Android 会禁用所有的非系统应用。由于 APatch 管理器不会将自身注册为系统应用,这一规则会导致 APatch 管理器在进入安全模式后被禁用。
46 |
47 | 这一现象是正常现象,并且如果你没有使用任何方式将 APatch 固化为系统应用,那么这代表着 Android 和 APatch 的安全模式工作都一切正常。你只需要再次重启你的设备,Android 就会退出安全模式,同时 APatch 管理器就会被恢复,并且 APatch 不会退出安全模式,此时你就可以将存在问题的模块禁用了。
48 |
--------------------------------------------------------------------------------
/docs/pt_BR/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | # https://vitepress.dev/reference/default-theme-home-page
3 | layout: home
4 |
5 | hero:
6 | name: "APatch"
7 | text: "Nova solução root do kernel Android"
8 | tagline: Solução root universal para versões do kernel Android 3.18 - 6.1
9 | image:
10 | src: /logo.png
11 | alt: APatch
12 | actions:
13 | - theme: brand
14 | text: Iniciar
15 | link: /pt_BR/what-is-apatch
16 | - theme: alt
17 | text: Ver no GitHub
18 | link: https://github.com/bmax121/APatch
19 | - theme: alt
20 | text: Contribuir com a documentação
21 | link: https://github.com/AndroidPatch/APatchDocs
22 |
23 | features:
24 | - title: Baseado em kernel
25 | details: APatch é executado no espaço do kernel e tem maior ocultação e controle do que o espaço do usuário root.
26 | - title: Controle de acesso root
27 | details: Somente apps permitidos podem acessar ou ver su, todos os outros apps não estão cientes disso.
28 | - title: APMódulo
29 | details: Suporte a módulos semelhantes ao Magisk.
30 | - title: KPMódulo
31 | details: Suporte a módulos que permitem injetar qualquer código no kernel (Fornece as funções do kernel inline-hook e syscall-table-hook).
32 | ---
33 |
--------------------------------------------------------------------------------
/docs/ru/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | # https://vitepress.dev/reference/default-theme-home-page
3 | layout: home
4 |
5 | hero:
6 | name: 'APatch'
7 | text: 'Новое root-решение для Android на основе ядра'
8 | tagline: Универсальное root-решение для ядра Android версий 3.18 - 6.1
9 | image:
10 | src: /logo.png
11 | alt: APatch
12 | actions:
13 | - theme: brand
14 | text: Начать
15 | link: /ru/what-is-apatch
16 | - theme: alt
17 | text: Посмотреть на GitHub
18 | link: https://github.com/bmax121/APatch
19 | - theme: alt
20 | text: Вносите свой вклад в разработку документации
21 | link: https://github.com/AndroidPatch/APatchDocs
22 |
23 | features:
24 | - title: На основе ядра
25 | details: APatch работает в пространстве ядра и обладает большей скрытностью и контролем, чем root в пользовательском пространстве.
26 | - title: Контроль root доступа
27 | details: Только разрешенные приложения могут получить доступ к su, все остальные приложения не будут знать о существовании su.
28 | - title: APModule
29 | details: Поддержка модулей, аналогичных Magisk.
30 | - title: KPModule
31 | details: Поддержка модулей, позволяющих внедрять любой код в ядро (требуется включение функций inline-hook и syscall-table-hook у ядра).
32 | ---
33 |
--------------------------------------------------------------------------------
/docs/.vitepress/locales/zh_CN.ts:
--------------------------------------------------------------------------------
1 | import { createRequire } from 'module'
2 | import { defineConfig } from 'vitepress'
3 |
4 | export default defineConfig({
5 | lang: 'zh-CN',
6 | description: '一个基于内核,为安卓准备的 root 方案。',
7 |
8 | themeConfig: {
9 | nav: nav(),
10 |
11 | lastUpdatedText: '最后更新',
12 |
13 | sidebar: {
14 | '/zh_CN/': sidebarGuide()
15 | },
16 |
17 | socialLinks: [
18 | { icon: 'github', link: 'https://github.com/bmax121/APatch' }
19 | ],
20 | }
21 | })
22 |
23 | function nav() {
24 | return [
25 | { text: '指南', link: '/zh_CN/what-is-apatch' },
26 | ]
27 | }
28 |
29 | function sidebarGuide() {
30 | return [
31 | {
32 | text: '指南',
33 | items: [
34 | { text: '什么是 APatch?', link: '/zh_CN/what-is-apatch' },
35 | { text: '重要提醒', link: '/zh_CN/warn' },
36 | { text: '安装', link: '/zh_CN/install' },
37 | { text: '升级', link: '/zh_CN/update' },
38 | { text: '救砖', link: '/zh_CN/rescue-bootloop' },
39 | { text: 'AndroidPatch Module(APM) 开发指南', link: '/zh_CN/apm-guide' },
40 | { text: 'KernelPatch Module(KPM) 使用指南', link: '/zh_CN/kpm-usage-guide' },
41 | { text: '反馈与帮助', link: '/zh_CN/support' },
42 | { text: '常见问题解答', link: '/zh_CN/faq' },
43 | ]
44 | }
45 | ]
46 | }
47 |
--------------------------------------------------------------------------------
/docs/.vitepress/locales/ru.ts:
--------------------------------------------------------------------------------
1 | import { createRequire } from 'module'
2 | import { defineConfig } from 'vitepress'
3 |
4 | export default defineConfig({
5 | lang: 'ru-RU',
6 | description: 'Root-решение на основе ядра для устройств Android.',
7 |
8 | themeConfig: {
9 | nav: nav(),
10 |
11 | lastUpdatedText: 'Последнее обновление',
12 |
13 | sidebar: {
14 | '/ru/': sidebarGuide(),
15 | },
16 |
17 | socialLinks: [
18 | { icon: 'github', link: 'https://github.com/bmax121/APatch' },
19 | ],
20 | },
21 | })
22 |
23 | function nav() {
24 | return [{ text: 'Руководство', link: '/what-is-apatch' }]
25 | }
26 |
27 | function sidebarGuide() {
28 | return [
29 | {
30 | text: 'Руководство',
31 | items: [
32 | { text: 'Что такое APatch?', link: '/ru/what-is-apatch' },
33 | { text: 'Предупреждение', link: '/ru/warn' },
34 | { text: 'Установка', link: '/ru/install' },
35 | { text: 'Обновление', link: '/ru/update' },
36 | { text: 'Спасения от бутлупа', link: '/ru/rescue-bootloop' },
37 | { text: 'Руководство по разработке модулей APM', link: '/ru/apm-guide' },
38 | { text: 'Руководство по использованию модуля KPModule', link: '/ru/kpm-usage-guide' },
39 | { text: 'Обратная связь и помощь', link: '/ru/support' },
40 | { text: 'Частые вопросы', link: '/ru/faq' },
41 | ],
42 | },
43 | ]
44 | }
45 |
--------------------------------------------------------------------------------
/docs/.vitepress/locales/en.ts:
--------------------------------------------------------------------------------
1 | import { createRequire } from 'module'
2 | import { defineConfig } from 'vitepress'
3 |
4 | export default defineConfig({
5 | lang: 'en-US',
6 | description: 'A kernel-based root solution for Android devices.',
7 |
8 | themeConfig: {
9 | nav: nav(),
10 |
11 | lastUpdatedText: 'Last updated',
12 |
13 | sidebar: {
14 | '/': sidebarGuide()
15 | },
16 |
17 | socialLinks: [
18 | { icon: 'github', link: 'https://github.com/bmax121/APatch' }
19 | ],
20 | }
21 | })
22 |
23 | function nav() {
24 | return [
25 | { text: 'Guide', link: '/what-is-apatch' },
26 | ]
27 | }
28 |
29 | function sidebarGuide() {
30 | return [
31 | {
32 | text: 'Guide',
33 | items: [
34 | { text: 'What is APatch?', link: '/what-is-apatch' },
35 | { text: 'Security alert', link: '/warn' },
36 | { text: 'Installation', link: '/install' },
37 | { text: 'Update', link: '/update' },
38 | { text: 'Rescue from bootloop', link: '/rescue-bootloop' },
39 | { text: 'AndroidPatch Module Development Guide', link: '/apm-guide' },
40 | { text: 'KernelPatch Module Usage Guide', link: '/kpm-usage-guide' },
41 | { text: 'Help and support', link: '/support' },
42 | { text: 'FAQ', link: '/faq' },
43 | ]
44 | }
45 | ]
46 | }
47 |
--------------------------------------------------------------------------------
/docs/zh_CN/update.md:
--------------------------------------------------------------------------------
1 | # 升级
2 |
3 | [[toc]]
4 |
5 | ## 普通升级 APatch
6 |
7 | ::: info
8 | 通常来说,你可以直接在 app 内更新。
9 | :::
10 |
11 | 1. 下载新版本的 APatch 管理器
12 |
13 | > 如果需要,请重新验证超级密钥。
14 |
15 | 2. 点击右上角的 
16 |
17 | 3. 选择 `修补并安装`
18 |
19 | ## OTA 升级保留 APatch
20 |
21 | ::: tip
22 | APatch 的保 root OTA 升级流程与 Magisk 保持一致。
23 | :::
24 |
25 | 1. 正常 OTA 流程
26 |
27 | 2. 在 OTA 更新安装完成时(提示重启时),打开 APatch 管理器,点击右上角的 
28 |
29 | 3. 选择 `安装到未使用的槽位(OTA 后)`
30 |
31 | ::: warning
32 | APatch 的 OTA 功能目前不太稳定,可能会出现问题。当遇到问题时,最好[前往 APatch 项目 GitHub 仓库提交 issue](https://github.com/bmax121/APatch/issues/new/choose)。
33 | :::
34 |
35 | ::: info 提请注意
36 | 对于 MIUI/Xiaomi HyperOS 设备,以下事项需要额外注意:
37 |
38 | 和 Magisk/KernelSU 不同,APatch 目前不会在修补 `boot` 镜像时自动备份原厂镜像。如果不在更新系统前手动恢复 `boot` 镜像,会导致系统升级的校验失败,从而被强制使用全量包进行更新。
39 |
40 | 如果你正在使用 MIUI/Xiaomi HyperOS(特别是开发版),我们建议你在更新系统前手动还原原厂 `boot` 镜像。
41 | :::
42 |
43 | ## 其他注意事项 {#Miscellaneous}
44 |
45 | 本文档所述内容基于最新的 APatch 管理器。当你无法找到本文里提到的按钮时,这说明你的 APatch 管理器版本过低。
46 |
47 | ::: warning
48 | 旧版将不再支持且存在超级密钥泄露的安全隐患。
49 | :::
50 |
51 | 在一些重大版本更新中,新版本的 KernelPatch 会与旧版的**不兼容**,**导致升级后丢失 root**。如果存在不兼容现象,我们会在发布信息中特别说明。当已出现这个问题时,我们推荐你使用原 `boot` 重新修补安装。
52 |
53 | **目前存在极少量 OTA 切换槽位失败的情况。** 当这样失败时,请重新手动安装。此外,如果你愿意,可以携带问题日志[前往 GitHub 提出 issue](https://github.com/bmax121/APatch/issues/new/choose)。
54 |
--------------------------------------------------------------------------------
/docs/.vitepress/locales/pt_BR.ts:
--------------------------------------------------------------------------------
1 | import { createRequire } from 'module'
2 | import { defineConfig } from 'vitepress'
3 |
4 | export default defineConfig({
5 | lang: 'pt-BR',
6 | description: 'Uma solução root baseada em kernel para dispositivos Android.',
7 |
8 | themeConfig: {
9 | nav: nav(),
10 |
11 | lastUpdatedText: 'Última atualização',
12 |
13 | sidebar: {
14 | '/pt_BR/': sidebarGuide()
15 | },
16 |
17 | socialLinks: [
18 | { icon: 'github', link: 'https://github.com/bmax121/APatch' }
19 | ],
20 | }
21 | })
22 |
23 | function nav() {
24 | return [
25 | { text: 'Guia', link: '/pt_BR/what-is-apatch' },
26 | ]
27 | }
28 |
29 | function sidebarGuide() {
30 | return [
31 | {
32 | text: 'Guia',
33 | items: [
34 | { text: 'O que é APatch?', link: '/pt_BR/what-is-apatch' },
35 | { text: 'Alerta de segurança', link: '/pt_BR/warn' },
36 | { text: 'Instalação', link: '/pt_BR/install' },
37 | { text: 'Atualizar', link: '/pt_BR/update' },
38 | { text: 'Resgate do bootloop', link: '/pt_BR/rescue-bootloop' },
39 | { text: 'Guia de desenvolvimento de módulos AndroidPatch', link: '/pt_BR/apm-guide' },
40 | { text: 'Guia de uso de módulos KernelPatch', link: '/pt_BR/kpm-usage-guide' },
41 | { text: 'Ajuda e suporte', link: '/pt_BR/support' },
42 | { text: 'Perguntas frequentes', link: '/pt_BR/faq' },
43 | ]
44 | }
45 | ]
46 | }
47 |
--------------------------------------------------------------------------------
/docs/zh_CN/kpm-usage-guide.md:
--------------------------------------------------------------------------------
1 | # KernelPatch Modules(KPM) 使用指南
2 |
3 | [[toc]]
4 |
5 | ---
6 |
7 | APatch 依赖于 KernelPatch,继承了其全部功能并进行了扩展。因此,APatch 也支持使用 KernelPatch Modules (KPM)。下面是关于 KPM 的使用说明。
8 |
9 | ## 什么是 KPM?
10 |
11 | KPM 是一种运行在内核空间内的模块,可以让代码运行在内核空间中,类似于 Loadable Kernel Modules(LKM)。
12 |
13 | 通过 KPM,你可以实现一些 APM 不能实现的功能(例如分区镜像保护等)。
14 |
15 | ## 如何安装 KPM?
16 |
17 | KPM 有三种安装方式:嵌入、加载和安装。
18 |
19 | ::: tip 关于“安装”
20 | 目前,APatch 并没有实现 KPM 的“安装”操作,因此现阶段 APatch 的 KPM 只能通过“嵌入”和“加载”两种方式安装。KernelPatch 和 APatch 的开发者 正在努力实现相关功能,请耐心等待。
21 | :::
22 |
23 | ### 嵌入
24 |
25 | `嵌入`是指将 KPM 直接嵌入至 `kernel` 。此模式下安装的 KPM 会同 `kernel` 一起被合并进 `boot.img` 中,在 `pre-kernel-init` 阶段加载。
26 |
27 | KPM 的嵌入可以在首次使用 APatch 管理器修补 `boot.img` 时或者在完成 APatch 安装后进行。你也可以使用 `kptools` 手动嵌入。
28 |
29 | #### 首次修补时嵌入 {#embed-kpms-at-first-patching}
30 |
31 | 1. 按照[安装指南](/zh_CN/install)中的[自动修补](/zh_CN/install.md#自动修补)流程进行修补,在进行第 4 步之后不要立即执行下一步操作。
32 |
33 | 2. 点击“嵌入模块”按钮,之后选择你要嵌入的 KPM 文件 (后缀名为 `.kpm`)。
34 |
35 | 3. 确认要嵌入的 KPM 是你想要使用的 KPM。
36 |
37 | 4. 完成剩余的“自动修补”流程即可。
38 |
39 | #### 安装 APatch 后嵌入
40 |
41 | 在 APatch 安装后,嵌入 KPM 的方式和安装 APM 的方式大致相同。你可以在“内核模块”界面点击右下角的按钮,选择“嵌入”,之后的步骤可以参考[首次修补时嵌入](/zh_CN/kpm-usage-guide#embed-kpms-at-first-patching)进行。
42 |
43 | ### 加载
44 |
45 | `加载`是指将 KPM 立即交给内核进行加载。通过这种方式加载的 KPM 会立即生效,但会在下次重新启动后消失。
46 |
47 | 加载 KPM 的方式和安装 APM 的方式大致相同,唯一一点区别在于 KPM 在加载后无需重启。
48 |
49 | ### 安装
50 |
51 | ::: tip 注意
52 | 目前 KernelPatch 和 APatch 还未实现 KPM 的安装,以下的描述仅为对安装 KPM 的预期行为描述。
53 | :::
54 |
55 | `安装`是指将 KPM 作为一个类似于 APM 的模块文件安装至 `/data/adb/kpmodules` 或类似目录。通过这种方式安装的 KPM 可以在特定的 event 进行加载。
56 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # APatch Docs
2 | [](https://github.com/AndroidPatch/APatchDocs/actions/workflows/deploy.yml)
3 |
4 | ## 中文介绍 / Chinese introduction
5 |
6 | 本仓库是 [APatch](https://github.com/bmax121/APatch) 的文档库,网页版本请参阅[此处](https://apatch.dev)。
7 |
8 | 目前本仓库的文档有[简体中文](/docs/zh_CN)、[英语](/docs/)、[葡萄牙语(巴西)](/docs/pt_BR)、[俄语](/docs/ru)等语言的版本,欢迎翻译并贡献本仓库文档的其他语言版本。我们需要你的帮助。
9 |
10 | ## English introduction
11 |
12 | This repository is for [APatch Documentation](https://apatch.dev), which is created for [APatch Project](https://github.com/bmax121/APatch).
13 |
14 | **Currently there are only [zh_CN](/docs/zh_CN), [EN](/docs/), [pt_BR](/docs/pt_BR), [RU](/docs/ru) documents, and you are welcome to contribute versions in other languages. We need you.**
15 |
16 | ## Credits
17 |
18 | Website deployment: [@NightSong-UwU](https://github.com/NightSong-UwU), [@zutzo](https://github.com/zutzo)
19 |
20 | Simplified Chinese / 简体中文:[@NightSong-UwU](https://github.com/NightSong-UwU), [@AkinaLTS](https://github.com/AkinaLTS), [@SakuRi-QwQ](https://github.com/SakuRi-QwQ)
21 |
22 | Brazilian Portuguese / Português (Brasil): [@igormiguell](https://github.com/igormiguell)
23 |
24 | English: [@RinLin-NYA](https://github.com/RinLin-NYA), [@igormiguell](https://github.com/igormiguell), [@xteamlyer](https://github.com/xteamlyer)
25 |
26 | Russian / Русский: [@xteamlyer](https://github.com/xteamlyer)
27 |
28 | ## 特别感谢 / Special thanks
29 |
30 | Domain providers:
31 |
32 | - NightSong: From the beginning to July 6, 2024, `apatch.top`
33 | - Bart: From July 6, 2024 to the present, `apatch.dev`
34 |
--------------------------------------------------------------------------------
/docs/what-is-apatch.md:
--------------------------------------------------------------------------------
1 | # What is APatch?
2 |
3 | APatch is a kernel-based root solution for Android devices that works in kernel mode and grants root privileges to userspace apps directly in kernel space.
4 |
5 | ## Features
6 |
7 | Compatible with most Android devices, not just limited to devices with GKI kernel.
8 |
9 | Supports APModule (APM), similar to Magisk modules.
10 |
11 | Supports KPModule (KPM), which allows to inject any code into kernel (Provides kernel function `inline-hook` and `syscall-table-hook`).
12 |
13 | APatch relies on KernelPatch.
14 |
15 | The APatch UI and the APModule source code have been derived and modified from KernelSU.
16 |
17 | ## How to use APatch?
18 |
19 | Please refer: [Installation](/install)
20 |
21 | ## How to patch?
22 |
23 | Please refer: [Patch](/install#how-to-patch)
24 |
25 | ## License
26 |
27 | ```
28 | Copyright (C) 2023 - Present bmax121 and APatch Developers
29 |
30 | APatch is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.
31 |
32 | This program is distributed in the hope that it will be useful,
33 | but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
34 |
35 | You should have received a copy of the GNU General Public License along with this program. If not, see .
36 | ```
37 |
38 | ## Important notice
39 |
40 | APatch is free software, allowing everyone to create their forks under the GNU GPLv3 license, which we use or permit separately from the rights holder(s).
41 |
42 | The APatch developers face difficulties in reviewing the code of every third-party distributions of APatch (regardless its free or not). Therefore, APatch developers are not responsible for any issues arising from the use of these distributions and **DO NOT** provide a warranty for them. If you encounter problems, you should send feedback directly to the author(s) of the third-party distribution you are using.
43 |
--------------------------------------------------------------------------------
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | # Sample workflow for building and deploying a VitePress site to GitHub Pages
2 | #
3 | name: Deploy VitePress site to Pages
4 |
5 | on:
6 | # Runs on pushes targeting the `main` branch. Change this to `master` if you're
7 | # using the `master` branch as the default branch.
8 | push:
9 | branches: [main]
10 |
11 | # Allows you to run this workflow manually from the Actions tab
12 | workflow_dispatch:
13 |
14 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
15 | permissions:
16 | contents: read
17 | pages: write
18 | id-token: write
19 |
20 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
21 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
22 | concurrency:
23 | group: pages
24 | cancel-in-progress: false
25 |
26 | jobs:
27 | # Build job
28 | build:
29 | runs-on: ubuntu-latest
30 | steps:
31 | - name: Checkout
32 | uses: actions/checkout@v6
33 | with:
34 | fetch-depth: 0 # Not needed if lastUpdated is not enabled
35 | # - uses: pnpm/action-setup@v3 # Uncomment this if you're using pnpm
36 | # - uses: oven-sh/setup-bun@v1 # Uncomment this if you're using Bun
37 | - name: Setup Node
38 | uses: actions/setup-node@v6
39 | with:
40 | node-version: 20
41 | cache: npm # or pnpm / yarn
42 | - name: Setup Pages
43 | uses: actions/configure-pages@v5
44 | - name: Install dependencies
45 | run: npm ci # or pnpm install / yarn install / bun install
46 | - name: Build with VitePress
47 | run: npm run docs:build # or pnpm docs:build / yarn docs:build / bun run docs:build
48 | - name: Upload artifact
49 | uses: actions/upload-pages-artifact@v4
50 | with:
51 | path: docs/.vitepress/dist
52 |
53 | # Deployment job
54 | deploy:
55 | environment:
56 | name: github-pages
57 | url: ${{ steps.deployment.outputs.page_url }}
58 | needs: build
59 | runs-on: ubuntu-latest
60 | name: Deploy
61 | steps:
62 | - name: Deploy to GitHub Pages
63 | id: deployment
64 | uses: actions/deploy-pages@v4
65 |
--------------------------------------------------------------------------------
/docs/pt_BR/what-is-apatch.md:
--------------------------------------------------------------------------------
1 | # O que é APatch?
2 |
3 | O APatch é uma solução root baseada em kernel para dispositivos Android, funciona no modo kernel e concede privilégios root para apps do espaço do usuário diretamente no espaço do kernel.
4 |
5 | ## Características
6 |
7 | Compatível com a maioria dos dispositivos Android, não apenas limitado a dispositivos com kernel GKI.
8 |
9 | Suporta APMódulo (APM) semelhante aos módulos do Magisk.
10 |
11 | Suporta KPMódulo (KPM), que permite injetar qualquer código no kernel (Fornece as funções do kernel `inline-hook` e `syscall-table-hook`).
12 |
13 | O APatch depende do KernelPatch.
14 |
15 | A interface de usuário do APatch e o código-fonte do APMódulo foram derivados e modificados a partir do KernelSU.
16 |
17 | ## Como usar o APatch?
18 |
19 | Por favor, consulte: [Instalação](/pt_BR/install)
20 |
21 | ## Como fazer patch?
22 |
23 | Por favor, consulte: [Patch](/pt_BR/install#how-to-patch)
24 |
25 | ## Licença
26 |
27 | ```
28 | Copyright (C) 2023 - Presente bmax121 e desenvolvedores do APatch
29 |
30 | APatch é um software gratuito: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU publicada pela Free Software Foundation, versão 3.
31 |
32 | Este programa é distribuído na esperança de que seja útil,
33 | mas SEM QUALQUER GARANTIA; mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para mais detalhes.
34 |
35 | Você deverá ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Caso contrário, consulte .
36 | ```
37 |
38 | ## Aviso importante
39 |
40 | O APatch é um software gratuito, permitindo que todos criem seus forks sob a licença GNU GPLv3, que usamos ou permitimos separadamente do(s) detentor(es) dos direitos.
41 |
42 | Os desenvolvedores do APatch enfrentam dificuldades em revisar o código de todas as distribuições de terceiros do APatch (independentemente de ser gratuito ou não). Portanto, os desenvolvedores do APatch não se responsabilizam por quaisquer problemas decorrentes do uso dessas distribuições e **NÃO** fornecem garantia para elas. Caso tenha problemas, você deve enviar feedback diretamente ao(s) autor(es) da distribuição de terceiros que está usando.
43 |
--------------------------------------------------------------------------------
/docs/rescue-bootloop.md:
--------------------------------------------------------------------------------
1 | # Rescue from bootloop
2 |
3 | [[toc]]
4 |
5 | ---
6 |
7 | APatch has an integrated bootloop rescue mechanism that can help you quickly disable all modules and restart the device if any malicious module is flashed and the device fails to boot.
8 |
9 | ::: warning
10 | This can only help you **when the device cannot boot due to malicious or conflicting modules**. However, this guide **cannot assist you with issues like factory reset or data loss!**
11 | :::
12 |
13 | ## Integrated mechanisms
14 |
15 | - Pressing Volume down button
16 |
17 | After **holding down the power button until the screen turns on, continuously press and release it until the first screen lights up**. This way, the built-in Safe Mode of APatch will be activated, and all modules will be disabled.
18 |
19 | ::: info
20 | APatch has a wide range of detection for volume buttons. Even if the `post-fs` phase has been executed, APatch will revert any changes made during it if a signal from Safe Mode is detected.
21 |
22 | In other words, this check occurs before `sys.boot_completed=1`.
23 | :::
24 |
25 | - Entering Safe Mode
26 |
27 | Some ROMs, such as MIUI/Xiaomi HyperOS, may trigger Safe Mode in their Recovery. Rebooting into Recovery and activating the Safe Mode that comes with the ROM will also trigger APatch's Safe Mode.
28 |
29 | ---
30 |
31 | ::: tip
32 | After entering Safe Mode, all modules on the APatch system's module page will be disabled. However, you can perform the "Uninstall" operation to remove any modules that may be causing issues.
33 | :::
34 |
35 | ## Some problems
36 |
37 | ### Even after activating Safe Mode, the system may still freeze.
38 |
39 | This may happen due to failures in reverting the `post-fs` modifications, which can cause the freeze. Forcefully rebooting should resolve the issue.
40 |
41 | ### I can't see APatch Manager after entering Safe Mode via Recovery.
42 |
43 | You may entered Android's Safe Mode.
44 |
45 | When entering Android's Safe Mode, there's an important rule: all apps that aren't part of the system will be disabled by Android system. APatch Manager isn't considered a system app, so this rule will result in the disabling of APatch Manager after entering Safe Mode.
46 |
47 | This behavior is normal, and it shows that both Android's Safe Mode and APatch's Safe Mode are working correctly, as long as APatch hasn't been consolidated as a system app. What you need to do is only to reboot your device again, and Android will exit Safe Mode with APatch Manager restored. However, APatch won't exit Safe Mode automatically. In this case, you can disable any APMs that may have caused issues.
48 |
--------------------------------------------------------------------------------
/docs/update.md:
--------------------------------------------------------------------------------
1 | # Update
2 |
3 | [[toc]]
4 |
5 | ## Normal APatch update
6 |
7 | ::: info
8 | You can update directly in the app.
9 | :::
10 |
11 | 1. Download the new version of APatch Manager
12 |
13 | > Please re-confirm the SuperKey if necessary.
14 |
15 | 2. Click the button in the upper right hand corner 
16 |
17 | 3. Select `Patch and install`
18 |
19 | ## OTA update with APatch retention
20 |
21 | ::: tip
22 | Keep the OTA root update process of APatch consistent with that of Magisk.
23 | :::
24 |
25 | 1. Download and start installing the OTA update through your ROM's software
26 |
27 | 2. After the OTA update installation is complete (when prompted to reboot), open APatch Manager and click the button in the upper right hand corner 
28 |
29 | 3. Select `Install to inactive slot (After OTA)`
30 |
31 | ::: warning
32 | The OTA update functionality is currently unstable and may cause issues. If an issue occurs, [go to the APatch repository on GitHub to submit an issue](https://github.com/bmax121/APatch/issues/new/choose).
33 | :::
34 |
35 | ::: info PAY ATTENTION
36 | For MIUI/Xiaomi HyperOS users, pay attention to the following points:
37 |
38 | Different from Magisk/KernelSU, APatch currently won't automatically back up the stock `boot.img` when patching it. If you haven't manually restored the stock `boot.img` before a system update, the check will fail, and you will be forced to use a full ROM to complete the update process.
39 |
40 | If you're using MIUI/Xiaomi HyperOS (especially Dev Edition), we recommend that restoring stock `boot.img` manually before system update.
41 | :::
42 |
43 | ## Miscellaneous
44 |
45 | The content described in this document is based on the latest version of APatch Manager. If you cannot find the buttons mentioned in this document,  it means that the version of your APatch Manager is too old.
46 |
47 | ::: warning
48 | Older versions are no longer supported and may pose a risk of compromising the SuperKey.
49 | :::
50 |
51 | In some major updates, newer versions of KernelPatch may not be compatible with older versions, **causing loss of root** after the update. If such an incompatibility occurs, it will be specifically mentioned in the release notes. If this happens, we recommend that you redo the installation steps using the stock `boot.img`.
52 |
53 | **There are a very small number of cases where OTA slot switching doesn't work.** The sample is too small to determine the exact cause of the issue. If this happens, reinstall the app manually. Additionally, if you want, you can report the issue and attach logs on the [Issues](https://github.com/bmax121/APatch/issues/new/choose) page on GitHub.
54 |
--------------------------------------------------------------------------------
/docs/ru/rescue-bootloop.md:
--------------------------------------------------------------------------------
1 | # Спасение от bootloop
2 |
3 | APatch имеет встроенный механизм спасения от `bootloop` (циклическая перезагрузка), который поможет вам быстро отключить все модули и перезагрузить устройство, если какой-либо вредоносный модуль прошит и устройство не загружается.
4 |
5 | :::warning
6 | Это может помочь вам только **в тех случаях, когда устройство не может загрузиться из-за вредоносных или конфликтующих модулей**. Однако это руководство **не может помочь вам в таких случаях, как сброс к заводским настройкам или потеря данных!**.
7 | :::
8 |
9 | ## Встроенные механизмы
10 |
11 | - Нажатие клавиши уменьшения громкости
12 |
13 | После **удержания кнопки питания для включения устройства, непрерывно нажимайте и отпускайте кнопку уменьшения громкости, пока не загорится первый экран**. Таким образом, будет активирован встроенный безопасный режим APatch, и все модули будут отключены.
14 |
15 | :::info
16 | APatch имеет широкий диапазон обнаружения кнопок громкости. Даже если была выполнена фаза `post-fs`, APatch отменит изменения, сделанные в фазе `post-fs`, если будет обнаружен сигнал для загрузки в безопасный режим.
17 |
18 | Другими словами, он действует до того, как система передаст параметр `sys.boot_completed=1`.
19 | :::
20 |
21 | - Вход в безопасный режим
22 |
23 | Некоторые прошивки, такие как MIUI/Xiaomi HyperOS, могут активировать безопасный режим в своем Recovery. Перезагрузка в Recovery и активация безопасного режима, поставляемого с прошивкой, также вызовет безопасный режим APatch.
24 |
25 | ---
26 |
27 | :::tip
28 | После входа в безопасный режим все модули APatch будут отключены, и вы можете выполнить операцию «Удаление», чтобы удалить модули вызывающие проблемы.
29 | :::
30 |
31 | ## Некоторые проблемы
32 |
33 | ### Даже после активации "Безопасного режима" система может зависнуть.
34 |
35 | Это может быть связано с тем, что не удалось вернуть изменения, внесенные в `post-fs`, что и вызвало зависание. Повторная принудительная перезагрузка должна решить эту проблему.
36 |
37 | ### Не удается увидеть APatch Manager после входа в безопасный режим через Recovery.
38 |
39 | Возможно, вы вошли в безопасный режим Android.
40 |
41 | При входе в безопасный режим Android действует правило: все несистемные приложения отключаются. APatch Manager не будет регистрироваться как системное приложение, поэтому это правило приведет к отключению APatch Manager после входа в безопасный режим.
42 |
43 | Такое поведение нормально, и оно показывает, что и безопасный режим Android, и безопасный режим APatch, работают нормально, если вы не закрепили APatch Manager в качестве системного приложения. Все, что вам нужно сделать, - это перезагрузить устройство, и Android выйдет из безопасного режима с восстановленным APatch Manager. Однако, APatch не выйдет из безопасного режима одновременно, поэтому в этом случае вы можете отключить все APM, которые вызвали проблемы.
44 |
--------------------------------------------------------------------------------
/docs/pt_BR/update.md:
--------------------------------------------------------------------------------
1 | # Atualizar
2 |
3 | [[toc]]
4 |
5 | ## Atualização normal do APatch
6 |
7 | ::: info INFORMAÇÕES
8 | Você pode atualizar diretamente no app.
9 | :::
10 |
11 | 1. Baixe a nova versão do APatch
12 |
13 | > Por favor, reconfirme a SuperKey, se necessário.
14 |
15 | 2. Clique no botão no canto superior direito 
16 |
17 | 3. Selecione `Patch e instalação`
18 |
19 | ## Atualização OTA mantém o APatch
20 |
21 | ::: tip DICA
22 | Mantenha o processo de atualização OTA com root do APatch consistente com o do Magisk.
23 | :::
24 |
25 | 1. Baixe e inicie o processo de instalação da atualização OTA através do software de sua ROM
26 |
27 | 2. Após a conclusão de instalação da atualização OTA (quando solicitado a reiniciar), abra o APatch e clique no botão no canto superior direito 
28 |
29 | 3. Selecione `Instalar no slot inativo (Após o OTA)`
30 |
31 | ::: warning AVISO
32 | A funcionalidade de atualização OTA está atualmente instável e pode causar problemas. Se ocorrerem problemas, [vá para o repositório do APatch no GitHub para enviar um problema](https://github.com/bmax121/APatch/issues/new/choose).
33 | :::
34 |
35 | ::: info PRESTE ATENÇÃO
36 | Para usuários da MIUI/Xiaomi HyperOS, preste atenção aos seguintes pontos:
37 |
38 | Diferente do Magisk/KernelSU, o APatch atualmente não realiza o backup automático do `boot.img` stock ao corrigi-lo. Se você não restaurou manualmente o `boot.img` stock antes de uma atualização do sistema, a verificação falhará e você será forçado a usar uma ROM completa para concluir o processo de atualização.
39 |
40 | Se você estiver usando MIUI/Xiaomi HyperOS (especialmente a versão Dev Edition), recomendamos restaurar manualmente o `boot.img` stock antes de realizar a atualização do sistema.
41 | :::
42 |
43 | ## Diversos {#Miscellaneous}
44 |
45 | O conteúdo descrito neste documento é baseado na versão mais recente do APatch. Se você não conseguir encontrar os botões mencionados neste documento,  significa que a versão do APatch que você está usando é muito antiga.
46 |
47 | ::: warning AVISO
48 | Versões mais antigas não são mais suportadas, e há risco de comprometer a SuperKey.
49 | :::
50 |
51 | Em algumas atualizações importantes, as versões mais recentes do KernelPatch podem não ser compatíveis com versões mais antigas, **causando a perda do root** após a atualização. Caso essa incompatibilidade ocorra, ela será mencionada especificamente nas notas de lançamento. Se isso acontecer, recomendamos que você refaça as etapas de instalação usando o `boot.img` stock.
52 |
53 | **Há um número muito pequeno de casos em que a troca de slot OTA não funciona.** A amostra é muito pequena para determinarmos exatamente qual é o problema. Se isso acontecer, reinstale o app manualmente. Além disso, se desejar, você pode relatar o problema e anexar os logs na página [Issues](https://github.com/bmax121/APatch/issues/new/choose) do GitHub.
54 |
--------------------------------------------------------------------------------
/docs/kpm-usage-guide.md:
--------------------------------------------------------------------------------
1 | # KernelPatch Module Usage Guide
2 |
3 | [[toc]]
4 |
5 | ---
6 |
7 | APatch relies on KernelPatch, inheriting all its functionalities and expanding its capabilities. Therefore, APatch also supports KernelPatch Modules (KPM). Below is an introduction about using KPMs.
8 |
9 | ## What is KPM?
10 |
11 | KernelPatch Modules (KPM) is a type of module that allows code to run in kernel space, similar to Loadable Kernel Modules (LKM). They can perform some operations that AndroidPatch Module (APM) cannot (e.g. partition image protection).
12 |
13 | ## How to use KPM?
14 |
15 | There are 3 ways to use KPM: Embed, Load, and Install.
16 |
17 | ::: tip ABOUT "INSTALL"
18 | Currently, APatch hasn't implemented the "Install" function for KPMs, and you can only use KPMs via "Embed" or "Load". KernelPatch and APatch's developers are working quickly to implement the "Install" function. Please wait patiently.
19 | :::
20 |
21 | ### Embed
22 |
23 | `Embed` is a function that embeds KPMs directly into the `kernel`. KPMs installed by this way will be merged together with patched `kernel` into `boot.img`, and will be loaded at the boot stage `pre-kernel-init`.
24 |
25 | The Embed of KPMs can be done both at first patching `boot.img` and after installation of APatch.
26 |
27 | #### Embed KPMs at first patching {#embed-kpms-at-first-patching}
28 |
29 | 1. [Patch](/install#patch) your `boot.img` by following the [Automatically patching](/install#automatically-patching) guide. After completing step 4, **DO NOT** proceed to the next step immediately.
30 |
31 | 2. Click the "Embed KPM" button and select the KPM you want to embed (KPM files have the `.kpm` suffix).
32 |
33 | 3. Verify that the selected KPM is the one you want to embed.
34 |
35 | 4. Complete the remaining steps of the "Automatically patching" guide, and you're done.
36 |
37 | #### Embed KPMs after installation of APatch
38 |
39 | After installing APatch, the way of embedding KPMs is familiar to installing APMs. You can click the button in the lower right corner and choose "Embed". The remaining steps can be referred to in [Embed KPMs at first patching](/kpm-usage-guide#embed-kpms-at-first-patching).
40 |
41 | ### Load
42 |
43 | `Load` is a function that allows the kernel to load KPMs directly. KPMs installed this way will be loaded immediately. However, all loaded KPMs will be lost after the next reboot.
44 |
45 | The way of load KPMs is familiar to installing APMs, with the only difference being that you don't need to reboot your device after loading KPMs.
46 |
47 | ### Install
48 |
49 | ::: tip ATTENTION
50 | KernelPatch and APatch haven't yet implemented the "Install" function for KPMs. All descriptions below are speculative and describe the expected behavior of "Install" option for KPMs.
51 | :::
52 |
53 | `Install` is a function that allows you to install KPMs similarly to APM files, in directories like `/data/adb/kpmodules` or any similar directories. KPMs installed by this way can be loaded during special events.
54 |
--------------------------------------------------------------------------------
/docs/pt_BR/rescue-bootloop.md:
--------------------------------------------------------------------------------
1 | # Resgate do bootloop
2 |
3 | [[toc]]
4 |
5 | ---
6 |
7 | O APatch possui um mecanismo de resgate de bootloop integrado que pode ajudá-lo a desativar rapidamente todos os módulos e reiniciar o dispositivo se algum módulo malicioso for flashado e o dispositivo não inicializar.
8 |
9 | ::: warning AVISO
10 | Isso só pode ajudá-lo **quando o dispositivo não pode ser inicializado devido a módulos maliciosos ou conflitante**. Porém, este guia **não pode ajudá-lo a resolver problemas como a restauração de fábrica ou perda de dados!**
11 | :::
12 |
13 | ## Mecanismos integrados
14 |
15 | - Pressionando o botão de diminuir volume
16 |
17 | Após **pressionar longamente o botão liga/desliga até a tela ligar, pressione e solte continuamente até que a primeira tela acenda**. Desta forma, o Modo de Segurança integrado do APatch será ativado e todos os módulos serão desativados.
18 |
19 | ::: info INFORMAÇÕES
20 | O APatch tem uma ampla gama de detecção para os botões de volume. Mesmo que o `post-fs` tenha sido executado, o APatch reverterá quaisquer alterações feitas nela se detectar um sinal do Modo de Segurança.
21 |
22 | Em outras palavras, essa verificação ocorre antes de `sys.boot_completed=1`.
23 | :::
24 |
25 | - Entrando no Modo de Segurança
26 |
27 | Algumas ROMs, como a MIUI/Xiaomi HyperOS, podem ativar o Modo de Segurança em seu Recovery. Reiniciar para o Recovery e ativar o Modo de Segurança que vem com a ROM também iniciará o Modo de Segurança do APatch.
28 |
29 | ---
30 |
31 | ::: tip DICA
32 | Após entrar no Modo de Segurança, todos os módulos na página de módulos do sistema do APatch serão desativados. No entanto, você pode realizar a operação "Desinstalar" para desinstalar os módulos que podem estar causando problemas.
33 | :::
34 |
35 | ## Alguns problemas
36 |
37 | ### Mesmo depois de ativar o Modo de Segurança, o sistema ainda pode travar.
38 |
39 | Isso pode ocorrer devido a falhas ao reverter as modificações do `post-fs`, o que pode causar o travamento. Uma reinicialização forçada deve resolver o problema.
40 |
41 | ### Não consigo ver o APatch após entrar no Modo de Segurança via Recovery.
42 |
43 | Você pode entrar no Modo de Segurança do Android.
44 |
45 | Ao entrar no Modo de Segurança do Android, existe uma regra importante: todos os apps que não fazem parte do sistema serão desativados pelo Android. O APatch não é considerado um app do sistema, portanto, esta regra resultará na desativação do APatch após entrar no Modo de Segurança.
46 |
47 | Esse comportamento é normal e mostra que tanto o Modo de Segurança do Android quanto o Modo de Segurança do APatch estão funcionando corretamente, desde que o APatch não tenha sido consolidado como um app do sistema. O que você precisa fazer é apenas reiniciar o dispositivo novamente e o Android sairá do Modo de Segurança com o APatch restaurado. No entanto, o APatch não sairá do Modo de Segurança automaticamente. Nesse caso, você pode desativar qualquer APMódulo que tenha causado problemas neste caso.
48 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional stylelint cache
58 | .stylelintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variable files
76 | .env
77 | .env.development.local
78 | .env.test.local
79 | .env.production.local
80 | .env.local
81 |
82 | # parcel-bundler cache (https://parceljs.org/)
83 | .cache
84 | .parcel-cache
85 |
86 | # Next.js build output
87 | .next
88 | out
89 |
90 | # Nuxt.js build / generate output
91 | .nuxt
92 | dist
93 |
94 | # Gatsby files
95 | .cache/
96 | # Comment in the public line in if your project uses Gatsby and not Next.js
97 | # https://nextjs.org/blog/next-9-1#public-directory-support
98 | # public
99 |
100 | # vuepress build output
101 | .vuepress/dist
102 |
103 | # vuepress v2.x temp and cache directory
104 | .temp
105 | .cache
106 |
107 | # Docusaurus cache and generated files
108 | .docusaurus
109 |
110 | # Serverless directories
111 | .serverless/
112 |
113 | # FuseBox cache
114 | .fusebox/
115 |
116 | # DynamoDB Local files
117 | .dynamodb/
118 |
119 | # TernJS port file
120 | .tern-port
121 |
122 | # Stores VSCode versions used for testing VSCode extensions
123 | .vscode-test
124 |
125 | # yarn v2
126 | .yarn/cache
127 | .yarn/unplugged
128 | .yarn/build-state.yml
129 | .yarn/install-state.gz
130 | .pnp.*
131 |
132 | # from: https://github.com/vuejs/vitepress/blob/main/.gitignore
133 | /coverage
134 | /src/client/shared.ts
135 | /src/node/shared.ts
136 | *.log
137 | *.tgz
138 | .DS_Store
139 | .idea
140 | .temp
141 | .vite_opt_cache
142 | .vscode
143 | dist
144 | cache
145 | examples-temp
146 | node_modules
147 | pnpm-global
148 | TODOs.md
149 |
150 | cache
151 | .vitepress/cache
152 | # from ksu docs
153 |
--------------------------------------------------------------------------------
/docs/ru/update.md:
--------------------------------------------------------------------------------
1 | # Обновление
2 |
3 | ## Обычное обновление APatch
4 |
5 | ::: info
6 | Вы можете обновляться непосредственно в приложении.
7 | :::
8 |
9 | 1. Скачайте новую версию APatch Manager
10 |
11 | > При необходимости, пожалуйста, повторно подтвердите супер-ключ.
12 |
13 | 2. Нажмите на правый верхний угол 
14 |
15 | 3. Выберите `Патч и установка`
16 |
17 | ## OTA-обновление с сохранением APatch
18 |
19 | ::: tip
20 | OTA-обновление с сохранением root в APatch соответствует Magisk.
21 | :::
22 |
23 | 1. Скачайте и начните установку OTA-обновления через ПО вашей прошивки
24 |
25 | 2. После завершения установки OTA-обновления (при появлении запроса на перезагрузку) откройте APatch Manager и нажмите в правом верхнем углу кнопку 
26 |
27 | 3. Выберите `Установить в неиспользуемый слот (после OTA)`
28 |
29 | ::: warning
30 | Функциональность OTA-обновления с сохранением APatch в настоящее время не очень стабильна и могут возникнуть проблемы. Если возникнет проблема [перейдите в GitHub-репозиторий проекта APatch для отправки проблемы](https://github.com/bmax121/APatch/issues/new/choose)
31 | :::
32 |
33 | ::: info Обратите внимание
34 | Для пользователей MIUI/Xiaomi HyperOS вот на что следует обратить особое внимание:
35 |
36 | В отличие от Magisk/KernelSU, APatch в настоящее время не будет автоматически создавать резервную копию стокового `boot.img` при установке патча. Если вы не восстановили вручную стоковый `boot.img` перед обновлением системы, проверка не пройдет, и вам придется использовать Full ROM (архив с полной прошивкой) для завершения процесса обновления.
37 |
38 | Если вы используете MIUI/Xiaomi HyperOS (особенно Dev Edition), мы рекомендуем вручную восстанавливать стоковый `boot.img` перед обновлением системы.
39 | :::
40 |
41 | ## Прочее
42 |
43 | :::info
44 | Этот документ был последний раз обновлен 3 августа 2024 года в 13:00. Следует соблюдать осторожность при обращении к содержанию этой страницы, если разница во времени с настоящим моментом слишком велика.
45 | :::
46 |
47 | Содержание, описанное в этом документе, основано на последней версии APatch Manager. Если вы не можете найти кнопки, упомянутые в этом документе! [Patch Button](/PButton.png), это означает, что версия вашего APatch Manager слишком низкая.
48 |
49 | ::: warning
50 | Старые версии больше не поддерживаются, и существует риск компрометации супер-ключа.
51 | :::
52 |
53 | В некоторых крупных обновлениях новые версии KernelPatch могут быть несовместимы со старыми версиями, что **приводит к потере root** после обновления. Если такая несовместимость существует, мы специально укажем об этом в примечаниях к выпуску. Если такая проблема возникнет, мы рекомендуем вам повторить шаги по установке, используя оригинальный образ `boot`.
54 |
55 | **Существует очень небольшое количество случаев, когда OTA-переключение слотов не работает.** Выборка слишком мала, чтобы мы могли точно определить, в чем заключается проблема. Если это не помогло, пожалуйста, переустановите программу вручную. Также, если вы хотите, вы можете сообщить о проблеме и приложить логи на странице [issues](https://github.com/bmax121/APatch/issues/new/choose).
56 |
57 | Мы нуждаемся в вашей помощи.
58 |
--------------------------------------------------------------------------------
/docs/pt_BR/kpm-usage-guide.md:
--------------------------------------------------------------------------------
1 | # Guia de uso de módulos KernelPatch
2 |
3 | [[toc]]
4 |
5 | ---
6 |
7 | APatch depende do KernelPatch, herdando todas as suas funcionalidades e expandindo suas capacidades. Portanto, o APatch também oferece suporte ao KPMódulo (KPM). A seguir, apresentamos uma introdução sobre o uso do KPMódulo.
8 |
9 | ## O que é KPMódulo?
10 |
11 | O KPMódulo (KPM) é um tipo de módulo que permite que o código seja executado no espaço do kernel, semelhante ao Loadable Kernel Modules (LKM). Eles podem realizar algumas operações que o APMódulo (APM) não pode realizar (ex.: proteção da imagem de partição).
12 |
13 | ## Como usar o KPMódulo?
14 |
15 | Existem 3 maneiras de usar o KPMódulo: Incorporar, Carregar e Instalar.
16 |
17 | ::: tip SOBRE "INSTALAR"
18 | Atualmente, o APatch não implementou a função "Instalar" para KPMs, e você só pode usar KPMs via "Incorporar" ou "Carregar". Os desenvolvedores do KernelPatch e do APatch estão trabalhando rapidamente para implementar a função "Instalar". Por favor, espere pacientemente.
19 | :::
20 |
21 | ### Incorporar
22 |
23 | `Incorporar` é uma função que incorpora KPMs diretamente no `kernel`. KPMs instalados desta forma serão mesclados com o `kernel` corrigido no `boot.img`, e serão carregados no estágio de inicialização `pre-kernel-init`.
24 |
25 | A incorporação de KPMs pode ser feita tanto na primeira aplicação do patch no `boot.img` quanto após a instalação do APatch.
26 |
27 | #### Incorporar KPMs no primeiro patch {#embed-kpms-at-first-patching}
28 |
29 | 1. Faça o [Patch](/pt_BR/install#patch) de seu `boot.img` seguindo o guia [Patch automático](/pt_BR/install#automatically-patching). Após concluir a etapa 4, **NÃO** prossiga para a próxima etapa imediatamente.
30 |
31 | 2. Clique no botão "Incorporar KPM" e selecione o KPM que deseja incorporar (Os arquivos KPM possuem o sufixo `.kpm`).
32 |
33 | 3. Verifique se o KPM selecionado é realmente o que deseja incorporar.
34 |
35 | 4. Complete as etapas restantes do guia "Patch automático" e pronto!
36 |
37 | #### Incorporar KPMs após a instalação do APatch
38 |
39 | Após instalar o APatch, a forma de incorporar os KPMs é familiar à instalação de APMs. Você pode clicar no botão no canto inferior direito e escolher "Incorporar". Os passos restantes podem ser consultados em [Incorporar KPMs no primeiro patch](/pt_BR/kpm-usage-guide#embed-kpms-at-first-patching).
40 |
41 | ### Carregar
42 |
43 | `Carregar` é uma função que permite ao kernel carregar KPMs diretamente. Os KPMs instalados dessa forma são carregados imediatamente. No entanto, todos os KPMs carregados serão perdidos após a próxima reinicialização.
44 |
45 | A forma de carregar os KPMs é familiar à instalação de APMs, a única diferença é que você não precisa reiniciar o dispositivo após carregar os KPMs.
46 |
47 | ### Instalar
48 |
49 | ::: tip ATENÇÃO
50 | KernelPatch e APatch ainda não implementaram a função "Instalar" para KPMs. Todas as descrições abaixo são especulativas e descrevem o comportamento esperado da opção "Instalar" para KPMs.
51 | :::
52 |
53 | `Instalar` é uma função que permite instalar KPMs de forma semelhante aos arquivos APMs, em diretórios como `/data/adb/kpmodules` ou qualquer diretório semelhante. KPMs instalados dessa maneira podem ser carregados durante eventos especiais.
54 |
--------------------------------------------------------------------------------
/docs/ru/kpm-usage-guide.md:
--------------------------------------------------------------------------------
1 |
2 | # Руководство по использованию KPModule
3 |
4 | APatch основан на KernelPatch, он наследует все его функциональные возможности и был расширен. Следовательно, APatch также поддерживает модули KernelPatch (KPM). Вот введение об использовании KPM.
5 |
6 | ## Что такое KPM?
7 |
8 | Модули KernelPatch (KPM) - это тип модулей, который позволяет коду выполняться в пространстве ядра, подобно загружаемым модулям ядра (LKM). Они могут выполнять некоторые операции, которые APM не могут делать (например, защита образов разделов). Вы даже можете изменить ksud KernelSU на KPM, чтобы разрешить KernelSU работать на APatch.
9 |
10 | ## Как использовать KPM?
11 |
12 | Существует 3 способа использования KPM: Встраивание, Загрузка и Установка.
13 |
14 | ::: tip О "Установке"
15 | Этот документ последний раз обновлялся 06.08.2024 в 19:14. Будьте осторожны при доступе к содержимому этой страницы, если разница во времени с настоящим слишком велика.
16 |
17 | В настоящее время APatch не реализовал функцию "Установка" для KPM, и вы можете использовать KPM только с помощью "Встраивания" и "Загрузки". Разработчики KernelPatch и APatch работают над быстрой реализацией функции "Установка". Пожалуйста, наберитесь терпения.
18 | :::
19 |
20 | ### Встраивание
21 |
22 | `Встраивание` - это функция, которая встраивает KPM непосредственно в `ядро`. KPM, установленные таким образом, будут объединены вместе с пропатченным `ядром` в `boot.img` и будут загружены на этапе загрузки `pre-kernel-init`.
23 |
24 | Встраивание KPM может быть выполнено как при первом патчинге `boot.img`, так и после установки APatch.
25 |
26 | #### Встраивание KPM при первом патчинге {#embed-kpms-at-first-patching}
27 |
28 | 1. [Пропатчите](/ru/install#patch) ваш `boot.img`, следуя руководству по [Автоматическому патчингу](/ru/install#automatically-patching). После завершения шага 4 не переходите сразу к следующему шагу.
29 | 2. Нажмите кнопку "Embed KPM" и выберите KPM, который вы хотите встроить (Расширение файлов KPM - `.kpm`).
30 | 3. Убедитесь, что KPM - это тот KPM, который вы хотите встроить.
31 | 4. Завершите остальные шаги в руководстве по "Автоматическому патчингу", и все будет сделано.
32 |
33 | #### Встраивание KPM после установки APatch
34 |
35 | После установки APatch способ встраивания KPM аналогичен установке APM. Вы можете нажать кнопку в правом нижнем углу и выбрать "Embed". Оставшиеся шаги можно найти в разделе [Встраивание KPM при первом патчинге](/ru/kpm-usage-guide#embed-kpms-at-first-patching).
36 |
37 | ### Загрузка
38 |
39 | `Загрузка` - это функция, которая позволяет ядру загружать KPM напрямую. KPM, установленные таким образом, будут загружены немедленно. Однако все загруженные KPM будут потеряны после следующей перезагрузки.
40 |
41 | Способ загрузки KPM аналогичен установке APM; единственное отличие состоит в том, что вам не нужно перезагружать устройство после загрузки KPM.
42 |
43 | ### Установка
44 |
45 | ::: tip Внимание
46 | KernelPatch и APatch еще не реализовали функцию "Установка" для KPM. Все описания ниже являются предположительными и описывают ожидаемое поведение "Установки" для KPM.
47 | :::
48 |
49 | `Установка` - это функция, которая устанавливает KPM аналогично файлам APM в `/data/adb/kpmodules` или любые подобные каталоги. KPM, установленные таким образом, могут быть загружены во время специальных событий.
50 |
--------------------------------------------------------------------------------
/docs/zh_CN/faq.md:
--------------------------------------------------------------------------------
1 | # 常见问题解答
2 |
3 | [[toc]]
4 |
5 | ## 什么是 APatch?
6 |
7 | ::: info
8 | [这里](/zh_CN/what-is-apatch)的介绍更完整。
9 | :::
10 |
11 | APatch 是一种类似于 Magisk 或 KernelSU 的 root 解决方案,但 APatch 提供更多功能。
12 | APatch 分别结合了 Magisk 方便易用的通过 `boot.img` 安装的方法,和 KernelSU 强大的内核修补能力。
13 |
14 | ## APatch 与 Magisk 的区别?
15 |
16 | Magisk 对启动映像中的 `ramdisk` 进行补丁,以修改 `init` 系统。而 APatch 则直接修补 Android 内核。
17 |
18 | ## APatch 与 KernelSU 的区别?
19 |
20 | KernelSU 需要您设备的内核的源代码,而 OEM 并不总是提供该源码。而 APatch 仅需要您的设备原本的`boot.img`。
21 |
22 | ## APatch 与 Magisk、KernelSU 的区别?
23 |
24 | APatch 可选择不修改 SELinux,这意味着 Android 应用程序线程可以被 root,无需 `libsu` 和 `IPC` 。
25 |
26 | APatch 提供 **KernelPatch Module(KP模块)**。
27 |
28 | ## 什么是 KernelPatch Module(KP模块)?
29 |
30 | KPM 是一种运行在内核空间内的模块,可以让代码运行在内核空间中,类似于 **Loadable Kernel Modules**(LKM)。
31 |
32 | 此外,KPM 提供在内核空间进行内联 hook、系统调用表 hook 的能力。
33 |
34 | 更多相关信息,请参阅[如何编写KPM](https://github.com/bmax121/KernelPatch/blob/main/doc/zh-CN/module.md)。
35 |
36 | ## APatch 与 KernelPatch 的关系
37 |
38 | APatch 依赖于 KernelPatch,继承了其所有功能并进行了扩展。
39 |
40 | 您可以仅安装 KernelPatch,但如此将不允许您使用 APM。
41 |
42 | [了解更多关于 KernelPatch 的信息](https://github.com/bmax121/KernelPatch)。
43 |
44 | ## 什么是 SuperKey(超级密钥)?
45 |
46 | KernelPatch 添加了一个新的系统调用(syscall),为应用程序和用户空间中的程序提供所有功能,此系统调用称为 **SuperCall**。
47 | 当应用程序/程序尝试调用 SuperCall 时,它需要提供访问凭据,称为 **SuperKey**。
48 | 只有当 SuperKey 正确时,才能成功调用 SuperCall。否则,调用方将不受影响。
49 |
50 | ## 关于 SELinux如何处理?
51 |
52 | KernelPatch 不修改 SELinux 上下文,而是通过 hook 绕过 SELinux。 这允许您在应用程序上下文中 root Android 线程,无需使用 `libsu` 启动新进程,然后执行 `IPC` 。这非常方便。
53 |
54 | 此外,APatch 直接利用 `magiskpolicy` 提供额外的 SELinux 支持。
55 |
56 | ## APatch 的模块 WebUI
57 |
58 | APatch 的源代码来自于 KernelSU,因此 KernelSU 引入 WebUI 特性之后,APatch 也在 [10568](https://github.com/bmax121/APatch/releases/tag/10568) 版本中引入了 WebUI 特性。
59 |
60 | APatch 的 WebUI 实现方法和要求和 KernelSU 的实现方法和要求完全一致,为 KernelSU 模块设计的 WebUI 在 APatch 中可以完美运行。
61 |
62 | 如果你希望为 APM 或 KPM 设计 WebUI,请参考 KernelSU 的 [WebUI 介绍页面](https://kernelsu.org/zh_CN/guide/module-webui.html) 进行设计。
63 |
64 | ## 模块无法安装 (os error 2/5/22)?
65 |
66 | 在 root 授权页面取消 shell 的 root 权限。
67 |
68 | ## 安装的模块在升级到 10997 及以后版本的 APatch 后消失?
69 |
70 | 对 CI build 10977 及以后版本的特别说明
71 |
72 | ::: info 提醒
73 | 我们曾经在 [其他注意事项](/zh_CN/update#Miscellaneous) 中提醒过类似情况。
74 | :::
75 |
76 | APatch 在提交 [b843480](https://github.com/bmax121/APatch/commit/b843480c4f56b6190add41366e3eb7148ebc9b87) 之后放弃了对 `module.img` 的支持,所以任何在此 版本之前的 APatch 实例中安装的 APM 在升级到 `10977` 及其后续版本后都将**彻底 丢失**。
77 |
78 | 你将需要重新安装你以前安装的所有 APM.
79 |
80 | ## App 在手机重启后自动获得/丢失 root 权限?
81 |
82 | 此问题应该已经被修复了。不过,如果你仍然遇到此问题,可以尝试删除 `/data/adb/ap/package_config` 来重置 root 授权。随后,重新授权,即可修复该问题。
83 |
84 | ## 能使用 LSPosed 吗?
85 |
86 | LSPosed 依赖于 Riru 或 Zygisk,APatch 默认情况下并不附带对 Riru 或 Zygisk 的支持,因此 APatch 无法直接使用 LSPosed。
87 |
88 | 但是,APatch 可以通过安装 APM 的形式来添加对 Zygisk 的支持或者允许 LSPosed 在没有 Zygisk 的情况下运行。
89 |
90 | 下面是两种在 APatch 中使用 LSPosed 的解决方案:
91 |
92 | 1. 参考 [Zygisk 支持?](#zygisk-support) 部分以添加对 Zygisk 的支持。
93 | 2. 如果你只需要使用 LSPosed 而无需其它 Zygisk 功能,也可以使用 [Zloader](https://github.com/Mufanc/z-loader) 的 [LSPosed 专版](https://t.me/mufanc_chan/28) 以实现单独加载 LSPosed。
94 |
95 | ::: warning
96 | Zloader 与 Zygisk 不兼容,并且你也将无法使用任何其它依赖于 Zygisk 的 APM。使用前请先禁用或卸载任何 Zygisk 实现。
97 | :::
98 |
99 | ::: danger
100 | Zloader 在版本 `0.1.3` 以后没有任何新版本发布和代码提交。
101 |
102 | 我们不再建议使用此方式,请考虑改为引入 Zygisk。
103 | :::
104 |
105 | ## 无法使用 Shamiko
106 |
107 | Shamiko 是专有软件,我们无法适配。
108 | ::: danger
109 | **APatch 开发者将不对任何因使用 Shamiko 导致的问题承担任何责任,你需要自行承担使用风险。**
110 | :::
111 |
112 | ## Zygisk 支持? {#zygisk-support}
113 |
114 | APatch 和 KernelSU 保持一致,默认不附带对 Zygisk 的支持。
115 |
116 | 在社区的广泛努力下,现在有一些 APM 或 APatch 兼容的 Magisk 模块可以为 APatch 引入 Zygisk。以下是一些常用于引入 Zygisk 的 APM。
117 |
118 | - [ZygiskNext](https://github.com/Dr-TSNG/ZygiskNext): 最早是为 KernelSU 提供 Zygisk 环境的 APM,功能最为完善,是对 Zygisk API 的完整实现,同时在此基础上提供了一些额外特性。版本 `0.9.1.1` 及之前是自由软件,在此之后则为专有软件。该 APM 明确适配 APatch 的起始版本为 `1.0.3`。
119 |
120 | - [Zygisk_mod](https://github.com/Admirepowered/Zygisk_mod): 在 ZygiskNext 尚未适配 APatch 之前,该 APM 用于为 APatch 提供 Zygisk 环境。在 ZygiskNext 适配 APatch 之后,该 APM 随之停止更新并归档。
121 |
122 | - [ReZygisk](https://github.com/PerformanC/ReZygisk): ZygiskNext 在成为专有软件后出现的一个自由的提供 Zygisk 环境的 APM,仍处于早期开发阶段,部分 ZygiskNext 的专有特性在此 APM 中不受支持。
123 |
124 | - [NeoZygisk](https://github.com/JingMatrix/NeoZygisk): 在以上三者之后出现的另一个自由的提供 Zygisk 环境的 APM,它只专注于提供最基本的 Zygisk API 而不考虑其它额外特性。它的 Zygisk API 设计及相关部分直接由 Magisk 的内建 Zygisk 衍生而来,所以理论上说这个 APM 对 Zygisk API 的实现应该最贴近于 Magisk。
125 |
126 | 你可以在以上几个 Zygisk 实现中任选其一,或使用你自己的 Zygisk 实现。
127 |
128 | ::: warning
129 | 正如我们上面所说,APatch 默认不附带对 Zygisk 的内建支持,所以我们无法保证上述几种方案的可用性、适用性、稳定性等,也无法提供其它任何意义上的担保。
130 |
131 | 如果你在将 APatch 和其它任何 Zygisk 实现方案和/或任何依赖于 Zygisk 的 APM 一同使用时遇到了问题,**不要**直接向我们提交问题反馈,请优先考虑向这些 APM 的作者提交反馈。
132 | :::
133 |
134 | ## Root 检测软件无法通过?
135 |
136 | 如果你的软件可以正常使用,那么就不要一直纠结于检测软件。
137 |
--------------------------------------------------------------------------------
/docs/zh_CN/install.md:
--------------------------------------------------------------------------------
1 | # APatch 安装指南
2 |
3 | [[toc]]
4 |
5 | ## 安装前的准备工作
6 |
7 | 1. 进行 Root 之前请确保你的手机已处于 BL 解锁状态。
8 |
9 | 2. 你可以在终端输入或者adb输入 `zcat /proc/config.gz | grep CONFIG_KALLSYMS` 查询你的内核是否支持修补 (需ROOT)。
10 |
11 | 3. [点击此处](https://github.com/bmax121/APatch/releases)以获取最新稳定版本的APatch管理器。
12 |
13 | 4. 从刷机包或者其他方式提取你手机原厂的 `boot.img` ,稍后需要对进行修补。
14 |
15 | 5. 将你提取的 `boot.img` 备份到 电脑、U盘 等其他设备,如果后续刷机出现了任何问题,你可以通过使用 fastboot 刷回原厂 boot 来恢复系统。
16 |
17 | ::: tip
18 | 1. 进行下一步之前请确认你会使用 ADB 和 fastboot 工具,具有刷机方面的相关经验。如果你没有了解过,建议使用搜索引擎先学习相关知识。
19 |
20 | 2. APatch 无论任何设备都是修补 `boot`,不要尝试修补和刷入`init_boot`或者其他分区的镜像文件,APatch 开发者对由此导致的修补及启动失败不负任何责任。
21 |
22 | 3. 避免使用被其他管理器修补过 `Boot 文件` 进行修补,防止出现意料之外的情况。
23 | :::
24 |
25 | ## 安装要求
26 |
27 | APatch 的要求主要体现于内核的配置。内核配置的要求如下:
28 |
29 | ```txt
30 | CONFIG_KALLSYMS=y
31 | CONFIG_KALLSYMS_ALL=y
32 | ```
33 | 或:
34 | ```txt
35 | CONFIG_KALLSYMS=y
36 | CONFIG_KALLSYMS_ALL=n (初步支持)
37 | ```
38 |
39 | :::tip
40 | 你可以在终端输入或者 adb 输入 `zcat /proc/config.gz | grep -w CONFIG_KALLSYMS` 查询你的内核是否支持修补 (需 ROOT )。
41 | :::
42 |
43 | ::: warning
44 | **仅支持 ARM64 架构。**
45 |
46 | **仅支持 Android 内核版本 3.18 - 6.6。**
47 | :::
48 |
49 | ::: danger 关于 6.6 内核适用性的说明
50 | 对于 6.6 版本的内核,仅在小米和一加设备上测试过。对于其他品牌的设备,请以实际情况为准。
51 | :::
52 |
53 | ## 修补 {#how-to-patch}
54 |
55 | APatch 有多种修补方法。
56 |
57 | ### 自动修补
58 |
59 | 1. 前往[GitHub](https://github.com/bmax121/APatch/releases)下载最新管理器。
60 |
61 | 2. 点击主页右上角的  按钮,之后选择`选择一个启动镜像并修补`选项。
62 |
63 | 3. 选择你的 `boot.img`。
64 |
65 | 4. 在“超级密钥”卡片中设置一个密码,之后 APatch 管理器会将其作为超级密钥以解锁 root。
66 |
67 | :::warning
68 | 禁止设置 `12345678` 等弱密码,新版 APatch 管理器 已强制使用强密码 [原因](/zh_CN/warn)。
69 | :::
70 |
71 | 5. 点击“开始修补”并等待修补完成。修补成功后会显示修补后的 img 镜像 路径。例如: `/storage/emulated/0/Download/apatch_version_version_randomletter.img`
72 |
73 | 最后按你的实际情况[刷入](#刷入)即可。
74 |
75 | ### 手动修补
76 |
77 | 当 KernelPatch 更新后,管理器仍未更新时,你可以选择手动修补内核。
78 |
79 | 你可以前往[KernelPatch](https://github.com/bmax121/KernelPatch/releases)项目获取最新的`KP`文件。
80 |
81 | #### Windows
82 |
83 | 1. 下载 `kptools-win.zip` 和 `kpimg-android` ,并解压到当前目录使用,同时下载 `magiskboot(Windows)` 。
84 |
85 | 2. 执行:
86 |
87 | ```cmd
88 | magiskboot.exe unpack boot.img
89 | ```
90 |
91 | 解压 boot,然后将 kernel 改名为 kernel-b (kernel-b可以是其他第三方内核,但是第三方内核不做任何保证,也不会受到支持)。
92 |
93 | Windows可以使用 `CMD` 或 `PowerShell` 进行修补。
94 |
95 | 执行:
96 |
97 | ```cmd
98 | kptools-x86_64-win.exe -p --image kernel-b --skey "YourKey" --kpimg kpimg-android --out kernel
99 | ```
100 |
101 | 或者更推荐的,使用 `WSL` 的`Linux`修补:
102 |
103 | ```cmd
104 | ./kptools-linux -p --image kernel-b --skey "YourKey" --kpimg kpimg-android --out kernel
105 | ```
106 |
107 | 修补后无报错,最后用:
108 |
109 | ```cmd
110 | magiskboot.exe repack boot.img
111 | ```
112 |
113 | 打包生成镜像,生成的 **new-boot.img** 即为修补好的镜像。
114 |
115 | ---
116 |
117 | #### Linux
118 |
119 | 1. 下载 `kptools-linux` 和 `kpimg-android` ,并下载 `magiskboot`。
120 |
121 | 2. 执行:
122 |
123 | ```sh
124 | magiskboot unpack boot.img
125 | ```
126 |
127 | 解包boot,获取kernel文件。将kernel改名为kernel-b。
128 |
129 | 使用以下命令来修补内核镜像:
130 |
131 | ```sh
132 | ./kptools-linux -p --image kernel-b --skey "YourKey" --kpimg kpimg-android --out kernel
133 | ```
134 |
135 | 修补后无报错,最后用:
136 |
137 | ```sh
138 | magiskboot repack boot.img
139 | ```
140 |
141 | 打包生成镜像,生成的 `new-boot.img` 即是修补好的镜像。
142 |
143 | ::: info
144 | 你也可以试试[在线修补](https://kernelpatch-on-web.pages.dev/)。
145 | :::
146 |
147 | ::: tip
148 | 你可以传入参数 `--help`,即 `kptools --help` 来获取全部可用参数。
149 | :::
150 |
151 | ## 刷入
152 |
153 | ### 刷入镜像
154 |
155 | 使用 adb 连接您的设备,然后执行 `adb reboot bootloader` 进入 fastboot 模式,然后使用此命令刷入 修补过的镜像:
156 |
157 | ```sh
158 | fastboot flash boot PATH/TO/boot.img
159 | ```
160 |
161 | ::: tip
162 | 如果你的设备支持 fastboot boot,可以先使用 `fastboot boot boot.img` 来先尝试使用 boot.img 引导系统,如果出现意外,再重启一次即可开机。
163 | :::
164 |
165 | 刷入完成后,您应该重新启动您的设备:
166 |
167 | ```sh
168 | fastboot reboot
169 | ```
170 |
171 | ### 直接刷入
172 |
173 | 最新版本的 APatch 支持从 TWRP 等第三方 REC 一键刷入。
174 |
175 | ::: warning
176 | 此功能于版本 `10888` 引入,更早的版本不支持这种方式。
177 | :::
178 |
179 | 将下载的 APatch 安装包 (.apk) 后缀改为 .zip,例如从 `APatch-10888-release.apk` 到 `APatch-10888-release.zip`,随后使用第三方 REC 的刷入功能即可自动刷入安装 APatch。
180 |
181 | ::: tip
182 | 同样的,第三方类原生 ROM 的 REC(例如 LineageOS)所使用的 `adb sideload` 方法也支持。
183 | :::
184 |
185 | ::: warning
186 | **注意 自动刷入不会使用固定的超级密钥!相反的,使用此方式得到的超级密钥为随机数字 + 字母的组合。**
187 | 如果您需要自定义自己的超级密钥,请在开机后手动进入 APatch 管理器并重新修补,以此设置你自己的超级密钥。
188 | :::
189 |
190 | ## 卸载
191 |
192 | ### 自动卸载
193 |
194 | ::: warning
195 | 此功能于版本 `10888` 引入,更早的版本不支持这种方式。
196 | :::
197 |
198 | 下载 APatch 安装包,将安装包后缀改为zip,并将安装包文件名改为带有 `uninstall` 字样的名字。例如,从 `APatch-10888-release.apk` 到 `APatch-10888-release-uninstall.zip`,随后使用 REC 刷入即可。
199 |
200 | ::: tip
201 | 同样的,和安装一样,卸载也支持使用 `adb sideload`。
202 | :::
203 |
204 | ### 手动卸载
205 |
206 | 进入 `bootloader` 模式恢复当前 ROM 的原 boot 镜像即可。
207 |
208 | ```sh
209 | fastboot flash boot PATH/TO/boot.img
210 | ```
211 |
212 | :::warning
213 | 不要使用 `init_boot`!
214 | :::
215 |
--------------------------------------------------------------------------------
/docs/ru/faq.md:
--------------------------------------------------------------------------------
1 | # Частые вопросы
2 |
3 | ## Что такое APatch?
4 |
5 | ::: info
6 | [Здесь](/ru/what-is-apatch) вы можете найти более полную информацию.
7 | :::
8 |
9 | APatch - это root-решение, похожее на Magisk или KernelSU и являющееся одним из лучших. Оно сочетает в себе простой и удобный метод установки через `boot.img` как у Magisk, и мощные возможности KernelSU по работе на уровне ядра.
10 |
11 | ## В чем разница между APatch и Magisk?
12 |
13 | Magisk изменяет систему `init` с помощью патча `ramdisk` вашего загрузочного образа. APatch же патчит ядро напрямую.
14 |
15 | ## В чем разница между APatch и KernelSU?
16 |
17 | KernelSU требует исходный код ядра вашего устройства, который не всегда предоставляется OEM-производителем (вендором). APatch же требует лишь ваш изначальный `boot.img`.
18 |
19 | ## В чем разница между APatch, Magisk и KernelSU?
20 |
21 | APatch позволяет опционально не изменять SELinux, что означает, что поток приложения может получать root-права без `libsu` и `IPC`.
22 |
23 | Так же есть модули ядра - **KPModule**.
24 |
25 | ## Что такое KPModule?
26 |
27 | Модуль, который может выполнять код в пространстве ядра, подобно **Loadable Kernel Modules** (LKM, загружаемые модули ядра).
28 |
29 | Кроме того, KPM предоставляет возможность выполнять `inline-hook` и `syscall-table-hook` в пространстве ядра.
30 |
31 | Пожалуйста, прочтите [как написать KPM](https://github.com/bmax121/KernelPatch/blob/main/doc/zh-CN/module.md) для более подробной информации.
32 |
33 | ## Как связаны APatch и KernelPatch?
34 |
35 | APatch зависит от KernelPatch. Он унаследовал все его возможности и был расширен.
36 |
37 | Вы можете установить только KernelPatch, но это не позволит вам использовать APM (APatch Modules).
38 |
39 | [Узнайте больше о KernelPatch](https://github.com/bmax121/KernelPatch).
40 |
41 | ## Что такое SuperKey?
42 |
43 | KernelPatch добавляет новый системный вызов (syscall) для предоставления всех возможностей приложениям и программам в пользовательском пространстве. Этот системный вызов называется **SuperCall**. Когда приложение/программа пытается вызвать **SuperCall**, ей необходимо предоставить ключ доступа, известный как **SuperKey**. **SuperCall** может быть успешно вызван только в том случае, если **SuperKey** верен, а если он неверен, то вызывающая программа не будет исполнена.
44 |
45 | ## Как обрабатывается SELinux?
46 |
47 | KernelPatch не изменяет контекст SELinux, а обходит SELinux через хук. Это позволяет вам рутировать поток Android в контексте приложения без необходимости использовать `libsu` для запуска нового процесса и последующего выполнения `IPC`.
48 |
49 | Кроме того, APatch использует `magiskpolicy` для добавления дополнительной поддержки SELinux напрямую.
50 |
51 | ## WebUI (веб-интерфейс) APM/KPM
52 |
53 | Исходный код APatch был заимствован и модифицирован из KernelSU, поэтому APatch представил функцию WebUI с версии [10568](https://github.com/bmax121/APatch/releases/tag/10568) после того, как KernelSU представил функцию WebUI.
54 |
55 | Реализация и требования к APatch WebUI полностью совпадают с KernelSU. WebUI, разработанный для модулей KernelSU, может прекрасно работать в APatch.
56 |
57 | Если вы хотите разработать WebUI для APM или KPM, пожалуйста, обратитесь к [WebUI introduction](https://kernelsu.org/guide/module-webui.html) KernelSU для получения дополнительной информации.
58 |
59 | ## Не удается установить модули (ошибка os 2/5/22)?
60 |
61 | Отзовите root права для приложения «shell» на странице суперпользователя.
62 |
63 | ## Приложение получает/теряет права root автоматически при перезагрузке устройства?
64 |
65 | Эта проблема уже должна быть решена. Однако, если вы все еще сталкиваетесь с ней, вы можете попробовать удалить `/data/adb/ap/package_config`, чтобы сбросить права root-доступа. После этого повторное предоставление root-доступа должно решить проблему.
66 |
67 | ## Можно ли использовать LSPosed?
68 |
69 | Запуск LSPosed зависит от Riru или Zygisk, но по умолчанию в APatch не поддерживается Riru или Zygisk, поэтому вы не можете использовать LSPosed напрямую.
70 |
71 | Однако в APatch можно добавить поддержку Zygisk или позволить LSPosed работать без какой-либо реализации Zygisk, установив определенные APM (APatch Modules).
72 |
73 | Вот два решения по запуску LSPosed на APatch:
74 |
75 | 1. Обратитесь к [Поддерживается ли Zygisk?](#zygisk-support) чтобы добавить поддержку Zygisk.
76 | 2. Если вам нужно использовать только LSPosed без других функций Zygisk, вы можете попробовать [Zloader](https://github.com/Mufanc/z-loader) [for LSPosed](https://t.me/mufanc_chan/28) чтобы загрузить только LSPosed.
77 |
78 | ::: warning
79 | Zloader **НЕ** совместим ни с одной реализацией Zygisk, например, ZygiskNext или Zygisk_mod, и вы также не можете использовать APM, зависящие от Zygisk. Пожалуйста, отключите или удалите любую другую реализацию Zygisk перед использованием Zloader.
80 | :::
81 |
82 | ::: info
83 | Zloader все еще находится на ранней стадии разработки, приглашаем вас отправлять pull-запросы разработчикам Zloader или открывать тикеты по любым вопросам использования.
84 | :::
85 |
86 | ## Не можете использовать Shamiko?
87 |
88 | Мы не можем полностью поддерживать Shamiko из-за его закрытого исходного кода и отсутствия обновлений.
89 |
90 | ::: danger
91 | **Разработчики APatch не несут ответственности за сбои в случаях использования Shamiko, используйте его на свой страх и риск!**
92 | :::
93 |
94 | ## Поддерживается ли Zygisk? {#zygisk-support}
95 |
96 | Как и KernelSU, APatch по умолчанию не поддерживает Zygisk.
97 |
98 | APatch может использовать [ZygiskNext](https://github.com/Dr-TSNG/ZygiskNext) чтобы добавить поддержку Zygisk.
99 |
100 | Также, можете использовать [Zygisk_mod](https://github.com/Admirepowered/Zygisk_mod).
101 |
102 | ## Root-детекторы обнаруживают у вас root?
103 |
104 | Если приложения, которыми вы пользуетесь в повседневной жизни работают нормально, не стоит слишком беспокоиться о программах-обнаружителях.
105 |
--------------------------------------------------------------------------------
/docs/faq.md:
--------------------------------------------------------------------------------
1 | # FAQ
2 |
3 | [[toc]]
4 |
5 | ## What is APatch?
6 |
7 | ::: info
8 | [There](/what-is-apatch) is a more complete introduction.
9 | :::
10 |
11 | APatch is a root solution similar to Magisk or KernelSU that combines the best of both. It combines Magisk easy and convenient installation method via `boot.img` with KernelSU powerful kernel patching abilities.
12 |
13 | ## What is the difference between APatch and Magisk?
14 |
15 | Magisk modifies the `init` system with a patch to the `ramdisk` of your boot image. APatch patches the kernel directly.
16 |
17 | ## What is the difference between APatch and KernelSU?
18 |
19 | While KernelSU requires your device's kernel source code, which isn't always provided by the OEM, APatch only need your stock `boot.img`.
20 |
21 | ## What is the difference between APatch, Magisk, and KernelSU?
22 |
23 | APatch optionally allows not modifying SELinux. This means that the app's thread can be rooted without the need for `libsu` and `IPC`.
24 |
25 | **KPModule** provided.
26 |
27 | ## What is KPModule?
28 |
29 | KPM is a module that runs in kernel space, allowing code to be executed in kernel space, similar to **Loadable Kernel Modules** (LKM).
30 |
31 | Additionally, the KPM provides the ability to execute `inline-hook` and `syscall-table-hook` in kernel space.
32 |
33 | For more information, see [how to write KPM](https://github.com/bmax121/KernelPatch/blob/main/doc/zh-CN/module.md).
34 |
35 | ## What is the relationship between APatch and KernelPatch?
36 |
37 | APatch relies on KernelPatch, inheriting all of its capabilities and expanding on them.
38 |
39 | You can install only KernelPatch, but this doesn't allow you to use APM.
40 |
41 | [Learn more about KernelPatch](https://github.com/bmax121/KernelPatch).
42 |
43 | ## What is SuperKey?
44 |
45 | KernelPatch adds a new system call (syscall) to provide all resources for apps and programs in userspace, and this syscall is known as **SuperCall**. When an app/program tries to invoke **SuperCall**, a credential known as **SuperKey** must be provided. The invocation of the **SuperCall** will only succeed when the **SuperKey** is correct. If the SuperKey is incorrect, the caller won't be affected.
46 |
47 | ## How is SELinux processed?
48 |
49 | KernelPatch doesn't modify the SELinux context but bypasses it via hook. This allows you to root a thread on Android within an app's context, without the need to use `libsu` to start a new process and execute `IPC`.
50 |
51 | Additionally, APatch directly uses `magiskpolicy` to provide additional support for SELinux.
52 |
53 | ## WebUI of APM/KPM
54 |
55 | The APatch source code has been derived and modified from KernelSU, and APatch introduced the WebUI feature in version [10568](https://github.com/bmax121/APatch/releases/tag/10568), after KernelSU did the same.
56 |
57 | APatch WebUI implementation and requirements is completely same as KernelSU, WebUI designed for KernelSU modules can run perfectly in APatch.
58 |
59 | If you want to design WebUI for APM or KPM, refer to the [WebUI introduction](https://kernelsu.org/guide/module-webui.html) from KernelSU for more information.
60 |
61 | ## I can't install modules (OS error 2/5/22)
62 |
63 | Remove the root privilege from the "Shell" app in Superuser page.
64 |
65 | ## The installed modules disappear after updating to version 10997 of APatch and in subsequent versions
66 |
67 | Special notes about CI build after version 10977.
68 |
69 | ::: info
70 | We've noticed this issue in [Miscellaneous](update#miscellaneous) before.
71 | :::
72 |
73 | APatch has dropped support to `module.img` since commit [b843480](https://github.com/bmax121/APatch/commit/b843480c4f56b6190add41366e3eb7148ebc9b87). Therefore, any APModule installed in previous versions will be **COMPLETELY LOST** after updating to version `10977` or later.
74 |
75 | You will need to reinstall all APModules that were installed previously.
76 |
77 | ## App granted/lost root permission automatically when rebooting device
78 |
79 | This issue should already be resolved. However, if you're still experiencing the problem, try deleting the `/data/adb/ap/package_config` file to reset the root permissions. Then, grant root access again. This should fix the issue.
80 |
81 | ## Can I use LSPosed?
82 |
83 | LSPosed relies on Riru or Zygisk to run. However, APatch doesn't support Riru or Zygisk by default, so you cannot use LSPosed directly.
84 |
85 | However, APatch can add the Zygisk support or allow LSPosed run without any Zygisk implementation, through the installation of APMs.
86 |
87 | Here are two solutions for running LSPosed on APatch:
88 |
89 | 1. Refer to [Zygisk support?](#zygisk-support) section to add Zygisk support.
90 | 2. If you only need to use LSPosed without other Zygisk features, you can try [Zloader](https://github.com/Mufanc/z-loader) [for LSPosed](https://t.me/mufanc_chan/28).
91 |
92 | ::: warning
93 | Zloader is **NOT** compatible with any Zygisk implementation, and you cannot use any APMs that depend on Zygisk either. Please disable or uninstall any Zygisk implementation before using Zloader.
94 | :::
95 |
96 | ::: danger
97 | Zloader had **NO** code commits or new version releases after version `0.1.3` released.
98 |
99 | We no longer recommends using this method. Please consider using Zygisk instead.
100 | :::
101 |
102 | ## Can't use Shamiko?
103 |
104 | We cannot support Shamiko due to its proprietary.
105 |
106 | ::: danger
107 | **Any issues caused by using Shamiko will not be supported by APatch developers. Use at your own risk.**
108 | :::
109 |
110 | ## Zygisk support? {#zygisk-support}
111 |
112 | Same as KernelSU, APatch doesn't have built-in Zygisk support.
113 |
114 | Thanks to the community's efforts, several APMs or Magisk modules are now available that are compatible with APatch and allow you to add support for Zygisk. Below are some APMs that provide Zygisk support for APatch:
115 |
116 | - [ZygiskNext](https://github.com/Dr-TSNG/ZygiskNext): The first APM to provide a Zygisk environment for KernelSU, supporting the most comprehensive functions. It's a full implementation of Zygisk API, including additional features, both based on Zygisk and outside of it. Version `0.9.1.1` and all previous versions are open-source, while versions after this became proprietary. This APM initially supports APatch at version `1.0.3`.
117 |
118 | - [Zygisk_mod](https://github.com/Admirepowered/Zygisk_mod): Before ZygiskNext officially supports APatch, this APM was set to provide a Zygisk environment for APatch. With ZygiskNext now offering official support, Zygisk_mod has been discontinued, but it's still available.
119 |
120 | - [ReZygisk](https://github.com/PerformanC/ReZygisk): A free Zygisk implementation appeared after ZygiskNext become proprietary. Still in early development, this APM doesn't support some features present in ZygiskNext.
121 |
122 | - [NeoZygisk](https://github.com/JingMatrix/NeoZygisk): Another free Zygisk implementation after the implementations above, which only aims to provide a minimal Zygisk API and remove any other parts. Its Zygisk API design is directly inspired by Magisk's Zygisk API, making this implementation theoretically more similar to Magisk's integrated Zygisk.
123 |
124 | You can choose one of Zygisk implementations above, or use your own Zygisk implementation.
125 |
126 | ::: warning
127 | As we said above, APatch **DOES NOT** have built-in Zygisk support, so we **CAN NOT** and **WILL NOT** guarantee the availability, functionality, stability, or any other responsibilities related to elements of Zygisk.
128 |
129 | If you encounter issues using APatch with any Zygisk implementation or Zygisk-dependent modules, **DO NOT** report your bug directly to us, report bug to the developer(s) of the APM first instead.
130 | :::
131 |
132 | ## The root detection software fails
133 |
134 | If your software is working properly, don't worry too much about the detection software.
135 |
--------------------------------------------------------------------------------
/docs/pt_BR/faq.md:
--------------------------------------------------------------------------------
1 | # Perguntas frequentes
2 |
3 | [[toc]]
4 |
5 | ## O que é APatch?
6 |
7 | ::: info INFORMAÇÕES
8 | [Aqui](/pt_BR/what-is-apatch) tem uma introdução mais completa.
9 | :::
10 |
11 | O APatch é uma solução root semelhante ao Magisk ou KernelSU que une o melhor de ambos. Ele combina o método de instalação fácil e conveniente do Magisk por meio do `boot.img` com as poderosas habilidades de patch de kernel do KernelSU.
12 |
13 | ## Qual é a diferença entre APatch e Magisk?
14 |
15 | Magisk modifica o sistema `init` com um patch no `ramdisk` da sua imagem de inicialização. APatch corrige diretamente o kernel Android.
16 |
17 | ## Qual é a diferença entre APatch e KernelSU?
18 |
19 | Enquanto o KernelSU exige o código-fonte do kernel de seu dispositivo, que nem sempre é fornecido pelo fabricante, o APatch precisa apenas do `boot.img` stock.
20 |
21 | ## Qual é a diferença entre APatch, Magisk e KernelSU?
22 |
23 | O APatch permite opcionalmente não modificar o SELinux. Isso significa que o thread do app pode ser rooteado sem a necessidade de `libsu` e `IPC`.
24 |
25 | **KPMódulo** fornecido.
26 |
27 | ## O que é KPMódulo?
28 |
29 | KPM é um módulo que roda no espaço do kernel, permitindo que o código seja executado no espaço do kernel, semelhante ao **Loadable Kernel Modules** (LKM).
30 |
31 | Além disso, o KPMódulo fornece a capacidade de executar `inline-hook` e `syscall-table-hook` no espaço do kernel.
32 |
33 | Para mais informações, veja [como escrever um KPM](https://github.com/bmax121/KernelPatch/blob/main/doc/zh-CN/module.md).
34 |
35 | ## Qual é a relação entre APatch e KernelPatch?
36 |
37 | APatch depende do KernelPatch. Ele herda todas as suas capacidades e foi expandido.
38 |
39 | Você pode instalar apenas o KernelPatch, mas isso não permitirá o uso do APMódulo.
40 |
41 | [Saiba mais sobre o KernelPatch](https://github.com/bmax121/KernelPatch).
42 |
43 | ## O que é SuperKey?
44 |
45 | KernelPatch conecta chamadas do sistema (syscall) para fornecer todos os recursos para apps e programas no espaço do usuário, e essa chamada do sistema é conhecida como **SuperCall**. Quando um app/programa tenta invocar a SuperCall, é necessário fornecer uma credencial conhecida como **SuperKey**. A invocação da SuperCall só será bem-sucedida quando a SuperKey estiver correta. Caso a SuperKey esteja incorreta, o chamador não será afetado.
46 |
47 | ## Como o SELinux é processado?
48 |
49 | O KernelPatch não modifica o contexto do SELinux, mas o ignora via hook. Isso permite que você faça root em um thread do Android dentro do contexto de um app, sem a necessidade de usar `libsu` para iniciar um novo processo e executar o `IPC`.
50 |
51 | Além disso, o APatch usa diretamente o `magiskpolicy` para fornecer suporte adicional ao SELinux.
52 |
53 | ## WebUI do APMódulo/KPMódulo
54 |
55 | O código-fonte do APatch foi derivado e modificado a partir do KernelSU, e o APatch introduziu o recurso WebUI na versão [10568](https://github.com/bmax121/APatch/releases/tag/10568), após o KernelSU ter feito o mesmo.
56 |
57 | A implementação e os requisitos do WebUI do APatch são idênticos aos do KernelSU, o que significa que os WebUIs projetados para os módulos do KernelSU funcionarão perfeitamente no APatch.
58 |
59 | Se você deseja usar o WebUI para o APMódulo ou KPMódulo, consulte a [introdução do WebUI](https://kernelsu.org/pt_BR/guide/module-webui.html) do KernelSU para mais informações.
60 |
61 | ## Não consigo instalar módulos (Erro do OS 05/02/22)
62 |
63 | Revogue o privilégio root do app "Shell" na página SuperUsuário.
64 |
65 | ## Os módulos instalados desaparecem após a atualização para a versão 10997 do APatch e em versões posteriores
66 |
67 | Notas especiais sobre CI build após a versão 10977.
68 |
69 | ::: info INFORMAÇÕES
70 | Notamos esse problema em [Diversos](/pt_BR/update#Miscellaneous) antes.
71 | :::
72 |
73 | O APatch abandonou o suporte para `module.img` desde o commit [b843480](https://github.com/bmax121/APatch/commit/b843480c4f56b6190add41366e3eb7148ebc9b87). Portanto, qualquer APMódulo instalado em versões anteriores será **COMPLETAMENTE PERDIDO** após a atualização para a versão `10977` ou posterior.
74 |
75 | Será necessário reinstalar todos os APMódulos instalados anteriormente.
76 |
77 | ## O app automaticamente obtém e perde permissões root após o reinício do dispositivo
78 |
79 | Este problema já deve estar resolvido. No entanto, se você ainda estiver enfrentando o problema, tente excluir o arquivo `/data/adb/ap/package_config` para redefinir as permissões root. Em seguida, conceda novamente o acesso root. Isso deve resolver o problema.
80 |
81 | ## Posso usar o LSPosed?
82 |
83 | O LSPosed depende do Riru ou Zygisk para funcionar. No entanto, o APatch não oferece suporte ao Riru ou Zygisk por padrão, portanto, você não pode usar o LSPosed diretamente.
84 |
85 | No entanto, o APatch pode adicionar suporte ao Zygisk ou permitir que o LSPosed seja executado sem qualquer implementação do Zygisk, por meio da instalação de APMs.
86 |
87 | Aqui estão duas soluções para executar o LSPosed no APatch:
88 |
89 | 1. Consulte a seção [Suporta Zygisk?](#zygisk-support) para adicionar suporte ao Zygisk.
90 | 2. Se você só precisa usar o LSPosed sem os outros recursos do Zygisk, você pode tentar o [Zloader](https://github.com/Mufanc/z-loader) [para o LSPosed](https://t.me/mufanc_chan/28).
91 |
92 | ::: warning AVISO
93 | O Zloader **NÃO** é compatível com nenhuma implementação do Zygisk, e você também não pode usar nenhum APMódulo que dependa do Zygisk. Por favor, desative ou desinstale qualquer implementação do Zygisk antes de usar o Zloader.
94 | :::
95 |
96 | ::: danger PERIGO
97 | O Zloader **NÃO** recebeu commits de código ou lançamentos de novas versões após a versão `0.1.3`.
98 |
99 | Não recomendamos mais o uso deste método. Por favor, considere usar o Zygisk.
100 | :::
101 |
102 | ## Não é possível usar Shamiko?
103 |
104 | Não podemos oferecer suporte ao Shamiko devido devido ao seu proprietário.
105 |
106 | ::: danger PERIGO
107 | **Qualquer problema causado pelo uso do Shamiko não será suportado pelos desenvolvedores do APatch. Use por sua conta e risco.**
108 | :::
109 |
110 | ## Suporta Zygisk? {#zygisk-support}
111 |
112 | Assim como o KernelSU, o APatch não possui suporte integrado ao Zygisk.
113 |
114 | Graças ao empenho da comunidade, já existem vários APMs ou módulos Magisk compatíveis com o APatch, que permitem adicionar suporte ao Zygisk. Abaixo estão alguns APMs que oferecem suporte ao Zygisk para o APatch:
115 |
116 | - [ZygiskNext](https://github.com/Dr-TSNG/ZygiskNext): O primeiro APM a fornecer um ambiente Zygisk para o KernelSU, com suporte para as funções mais completas. É uma implementação completa da API Zygisk, incluindo recursos adicionais, tanto baseados no Zygisk quanto fora dele. A versão `0.9.1.1` e todas as versões anteriores são de código aberto, enquanto versões posteriores a essa se tornaram proprietárias. Este APM oferece suporte ao APatch a partir da versão `1.0.3`.
117 |
118 | - [Zygisk_mod](https://github.com/Admirepowered/Zygisk_mod): Antes do ZygiskNext oferecer suporte oficial ao APatch, este APM foi configurado para fornecer o ambiente Zygisk para o APatch. Com o suporte oficial do ZygiskNext, o Zygisk_mod foi descontinuado, mas ainda está disponível.
119 |
120 | - [ReZygisk](https://github.com/PerformanC/ReZygisk): Uma implementação gratuita do Zygisk que surgiu após o ZygiskNext se tornar proprietário. Ainda em desenvolvimento inicial, este APM não suporta alguns recursos presentes no ZygiskNext.
121 |
122 | - [NeoZygisk](https://github.com/JingMatrix/NeoZygisk): Outra implementação gratuita do Zygisk após as implementações acima, com o objetivo de fornecer apenas uma API Zygisk mínima e remover outras funcionalidades. Seu design de API Zygisk é inspirado diretamente na API Zygisk do Magisk, tornando essa implementação teoricamente mais semelhante ao Zygisk integrado no Magisk.
123 |
124 | Você pode escolher uma das implementações do Zygisk acima, ou usar sua própria implementação do Zygisk.
125 |
126 | ::: warning AVISO
127 | Como mencionado anteriormente, o APatch **NÃO** oferece suporte nativo ao Zygisk, portanto, **NÃO PODEMOS** e **NÃO VAMOS** garantir a disponibilidade, funcionalidade, estabilidade ou quaisquer outras responsabilidades relacionadas a elementos do Zygisk.
128 |
129 | Caso enfrente problemas ao usar o APatch com qualquer implementação do Zygisk ou módulos dependentes do Zygisk, **NÃO** relate seu bug diretamente para nós, em vez disso, relate o bug ao(s) desenvolvedor(es) do APM primeiro.
130 | :::
131 |
132 | ## O software de detecção de root falha
133 |
134 | Se o seu software está funcionando corretamente, não se preocupe muito com o software de detecção.
135 |
--------------------------------------------------------------------------------
/docs/zh_CN/apm-guide.md:
--------------------------------------------------------------------------------
1 | # AndroidPatch Modules(APM) 开发指南{#introduction}
2 |
3 | APatch 提供了一个模块机制(AndroidPatch Module),它可以在保持系统分区完整性的同时达到修改系统分区的效果;这种机制通常被称之为 `systemless`。
4 |
5 | APatch 的模块实现是从 [KernelSU](https://github.com/tiann/KernelSU) 模块复制并修改而来,感谢 KernelSU。
6 |
7 | 具体修改的代码对应位置:
8 |
9 | KernelSU: [https://github.com/tiann/KernelSU/tree/main/userspace/ksud](https://github.com/tiann/KernelSU/tree/main/userspace/ksud)
10 | APatch: [https://github.com/bmax121/APatch/tree/main/apd](https://github.com/bmax121/APatch/tree/main/apd)
11 |
12 | 以下的文档内容基本来自于 KernelSU 的文档,其中大部分内容与 KernelSU 方面保持一致。需要注意的主要有以下几个地方:
13 |
14 | 1. 文件位置
15 | 2. 环境变量
16 | 3. SELinux 支持,APatch 直接使用了 `magiskpolicy`
17 |
18 | APatch 的模块运作机制与 Magisk 几乎是一样的,如果你熟悉 Magisk 模块的开发,那么开发 APatch 的模块大同小异,你可以跳过下面有关模块的介绍,只需要了解 APatch 模块与 Magisk 模块的异同(编写中)。
19 |
20 |
23 |
24 | [[toc]]
25 |
26 | ## BusyBox
27 |
28 | APatch 提供了一个功能完备的 BusyBox 二进制文件(包括完整的SELinux支持)。可执行文件位于 `/data/adb/ap/bin/busybox`。
29 | APatch 的 BusyBox 支持运行时可切换的 "ASH Standalone Shell Mode"。
30 | 这种独立模式意味着在运行 BusyBox 的 ash shell 时,每个命令都会直接使用 BusyBox 中内置的应用程序,而不管 `PATH` 设置为什么。
31 | 例如,`ls`、`rm`、`chmod` 等命令将不会使用 `PATH` 中设置的命令(在Android的情况下,默认情况下分别为 `/system/bin/ls`、`/system/bin/rm` 和 `/system/bin/chmod`),而是直接调用 BusyBox 内置的应用程序。
32 | 这确保了脚本始终在可预测的环境中运行,并始终具有完整的命令套件,无论它运行在哪个Android版本上。
33 | 要强制一个命令不使用BusyBox,你必须使用完整路径调用可执行文件。
34 |
35 | 在 APatch 上下文中运行的每个 shell 脚本都将在 BusyBox 的 ash shell 中以独立模式运行。对于第三方开发者相关的内容,包括所有启动脚本和模块安装脚本。
36 |
37 | 对于想要在 APatch 之外使用这个“独立模式”功能的用户,有两种启用方法:
38 |
39 | 1. 设置环境变量 `ASH_STANDALONE` 为 `1`。
例如:`ASH_STANDALONE=1 /data/adb/ap/bin/busybox sh