AI summary
Root manager built on KernelPatch with system and kernel module management, Lua plugins, Shizuku integration, and customizable themes and layouts. This update refreshes KernelPatch artifacts and rewrites the interface.
Generated by AI. May contain inaccuracies.
Screenshots
About this app
FolkPatch is a Root management application built on KernelPatch. It combines a KernelPatch-based Root implementation, system and kernel module management, Lua plugins, Shizuku integration, and a configurable modern interface in one manager.
Language: English / 中文 / 日本語
FolkPatch is a Root management application built on KernelPatch. It combines a KernelPatch-based Root implementation, system and kernel module management, Lua plugins, Shizuku integration, and a configurable modern interface in one manager.
Read the full documentation
FolkPatch home screen FolkPatch module interface FolkPatch settings interface FolkPatch feature interface FolkPatch plugin interface FolkPatch customization interface
Overview FolkPatch provides:
KernelPatch-based Root without recompiling the kernel APM system modules with batch installation and backup support KPM kernel modules, including automatic loading Lightweight APD Lua plugins Shizuku service management and startup integration Runtime controls for network isolation, path hiding, kernel spoofing, mount hiding, and unmount policies Importable themes, wallpapers, custom fonts, and multiple home layouts English, Chinese, Japanese, and additional community translations
Requirements ARM64 Android device Android kernel 3.18 through 6.15 A supported KernelPatch installation The exact compatibility matrix and installation steps are available in the documentation.
Interface Multiple home layouts, including ListUI, GridUI, FocusUI, CircleUI, DashboardUI, and StatsUI FocusUI as the default home layout for new installations System theme colors, custom colors, wallpapers, and custom fonts Configurable navigation styles and dashboard cards Optional automatic update checks
Modules and Extensions
APM APM provides a Magisk-like system module system with installation, removal, enable and disable controls, batch operations, and full backups.
KPM KPM provides kernel module support for inline-hook and syscall-table-hook use cases, including automatic module loading.
APD Lua Plugins APD plugins run Lua scripts in the apd lifecycle without modifying system files or injecting a kernel module. They support configuration, quick actions, background daemons, and persistent logs.
Plugin documentation:
English: https://fp.mysqil.com/en/modules/plugin/ Chinese: https://fp.mysqil.com/modules/plugin/
Security The SuperKey has higher privileges than a normal Root session. A weak or exposed key can allow unauthorized control of the device. Use a strong key and keep it private.
Translation English and Chinese are the reference languages. Translation corrections should be submitted only for the target language. New language contributions are welcome when the entire translated file is included in the pull request.
Download and Installation Download the latest package from the Releases page. Install the package on the Android device. Follow the in-app setup flow and read the documentation before installing modules or enabling runtime controls.
Credits KernelPatch - core Root implementation Magisk - magiskpolicy KernelSU - application UI and module system reference SukiSU-Ultra - interface design reference APatch - upstream project MMRL - module repository format reference Shizuku - built-in Shizuku service
License FolkPatch is licensed under the GNU General Public License v3.
If you modify FolkPatch or integrate it into another project and distribute the result, the complete project must be released under GPLv3. Binary distributions must provide or promise complete, readable source code. The software is provided without warranty, and any violation terminates the GPLv3 grant.
What's new
- This update repackages the bundled KernelPatch artifacts (BTF support, hotpatch fixes, MTE-safe ksyms scans, boot image sizing in kptools, a BTI landing pad at paging_init, a clean policy snapshot for selinux_hide) and rewrites the interface: page transitions now use container transform, the old components and tokens give way to one design system, and home, modules, superuser and settings are realigned.
- 1. Kernel — repackaged KernelPatch kpimg, kptools and the kernelpatch.ko for all 7 KMIs are rebuilt from the latest 0.13.9 source (the version number is unchanged, the artifacts are refreshed). Compared with the previous build (115357), kpimg, libkptools.so and the .ko of android12-5.10, android13-5.10, android13-5.15, android14-5.15 and android14-6.1 all changed; android15-6.6 and android16-6.12 are unchanged.
- BTF struct and offset support: KernelPatch and KPMs can now resolve struct layouts and field offsets from BTF instead of relying on hand-written tables per KMI, which makes KPMs considerably more portable across kernel versions. hotpatch fixes: the error clamp-down bound is corrected, and the path that cannot self-build no longer calls aarch64_insn_patch_text, so it does not enter the hotpatch flow where self-patching is impossible. MTE bounds for the symbol scans: the suid, sgid and cap_ambient probes read the cred that setresuid, setresgid or prctl has just installed. That is a cred_jar object, not a CRED_MAX_SIZE scratch buffer, so under KASAN_HW_TAGS reading past sizeof(struct cred) is a tag-check fault, and with kasan.fault=panic the kernel dies in resolve_cred_offset(). The scan now stops at the first granule whose allocation tag (read with LDG) differs when the cred pointer carries an MTE tag, while pointers with the match-all tag keep the CRED_MAX_SIZE/ksize() bound, applied to all three scans. kptools boot image size: setup1.S copies the KernelPatch start image and extras to kernel_pa + start_offset, which is where the footprint declared by the Image header ends, but the arm64 boot protocol only guarantees image_size bytes free from the load address. A bootloader may place the initramfs, DTB or bootconfig right there, and the copy would overwrite it. image_size is now grown to cover the copy; the kernel's own value is saved in setup.kernel_size and restored before re-patching (so the start offset does not move) and when unpatching (so the original header returns). BTI landing pad at paging_init: when paging_init starts with PACIASP/PACIBSP, map_prepare saves NOP as the instruction to restore and NOPs the matching AUTIASP. PACIASP was also the function's BTI landing pad, so on kernels built with CONFIG_ARM64_BTI_KERNEL the indirect call through a function pointer faults on the first instruction ("Oops - BTI") and the kernel never gets past setup_arch. It now restores BTI c, which is a landing pad for BLR and executes as a NOP hint on CPUs or kernels without BTI. selinux_hide answers from a clean policy snapshot: a deep copy of the boot-time policy is taken at post-fs-data "before", and every app-facing query is answered from it, so a manager's later policy reload cannot be observed through selinuxfs. context, access and setprocattr use the snapshot's own policydb and sidtab on 5.0 and later, and redirect the policy argument of context_struct_compute_av / string_to_context_struct below 5.0; /sys/fs/selinux/status reports what a stock device shows (the live enforcing flag, sequence/policyload 0 and deny_unknown from the snapshot). The snapshot is serialized with the security_read_policy() ABI that matches the kernel (state argument before 6.6, none after) and rebuilt with policydb_read(), so no struct policydb layout is assumed; the policy-load capture keeps the last marker-free blob so the copy comes from the full platform policy rather than an earlier epoch; kmalloc/kfree are resolved separately because they have no ksym entry, so a query payload no longer fails with -ENOSYS. The feature refuses to enable when the snapshot, the two transaction hooks or the status page cannot be provided, instead of reporting success while queries still reach the live policy. demo-hello: fixes unsupported RELA relocation: 311 and an overflow in relocation type 261. 2. UI — rewritten page transitions A container transform now animates between pages: instead of a cross fade, the source component and the destination page share one geometric region, and entering and returning transition continuously. The FolkX engine is removed (FolkButton, FolkFacts, FolkStatus, FolkIconTile, FolkSelectableRow, FolkSettingsGroup and others), transitions are composed per page, and the navigation implementation converges on NavTransitions and NavContainerTransform. Bottom bar and drawer selection, floating bar surface and content clearance are recomputed from one rule set; navigation return, search expansion and scroll-driven app bar animations stay continuous. New unit tests cover navigation transitions, floating bar colour and layout variants, locking the transition geometry and colour derivation. 3. UI — one design system Typography, motion, dimensions and shape converge into the FolkType, FolkMotion, FolkDimens and FolkShape tokens; screens no longer carry raw dp/sp or raw colours, enforced by guard scripts. Semantic surface roles replace scattered container colour derivation: grouped rows, cards, pages and wallpaper layers take their colour by role, and the contrast policy lives in one place. The in-app contrast selector is removed and the old contrast preference migrates to the new model; dynamic colour, wallpaper scheme seeds and catalog colours are aligned, and ownership of grouped surface alpha is centralised. Wallpaper surfaces are layered again (page, top bar, bottom bar and dialog each get their own layer), removing wallpaper mismatches between routes; the bundled default dashboard wallpaper is removed and secondary pages inherit the route wallpaper. Icons are enforced as Outlined and AutoMirrored through a whitelist script, and four guards are added: icons, screen tokens, package boundaries and source file length. 4. UI — rewritten components TonalCard unifies the previous card implementations and ExpressiveDialog unifies the dialog frame. Settings rows move to SegmentedColumn, SegmentedRows, SegmentedSection and SegmentedSliderItem, replacing SplicedColumnGroup, SettingsItem, ToggleSettingCard, FolkPreference and the rest. Switches and buttons use the single ExpressiveSwitch and the Material button colour set. Search becomes AdaptiveSearchAppBar with shared search state (SearchAppBarScrollBehavior), replacing M3eSearchAppBar and letting several pages share one app bar. Charts become WaveChart and DonutChart, removing the old line, area and pie implementations. Dropdown menus adopt the expressive style, and the overflow menus are wired back up across the app. 5. Home Dashboard metrics move to StatsViewModel (replacing DashboardViewModel), and stats cards, rings and trend charts are recomputed from one set of metrics. Circle cards, info cards, A status cards and the home layout align to shared metrics, and card surface contrast is restored. The grid character card gains jelly feedback: a tap squashes the image and springs back, a long press holds a deeper deformation and rebounds on release; reduced motion falls back to a border highlight, and the repair entry stays as it was. 6. Modules Module sorting is unified in ModuleSort and ModuleSortSheet, with APM and KPM lists sharing one sorting and drag interaction. Module, online module, plugin and script pages share the adaptive search header, and secondary page app bars and content clearance are aligned. Cards, search and empty states on the online pages use the shared components. 7. Superuser The audit log and script access are consolidated, and the overflow menu actions that were never connected now work. The select-all entry is removed, so list actions apply per entry. 8. Settings Settings pages align with the M3E baseline: secondary page app bars, search and grouped row surface ownership follow one set of rules. Appearance, general, backup, behaviour, function, module, multimedia and security sections are rearranged onto the shared grouping components. 9. Other The launcher icon moves to webp and the per-density PNGs are removed, with the splash background and adaptive icon adjusted accordingly. HardwareMonitor is removed and its sampling moves into the stats layer. New tests cover contrast, dimensions, motion, palette, wallpaper tokens, wallpaper routes, navigation transitions, floating bar colour, module sorting, stats metrics, home card surfaces, theme preference migration and layout variants. 10. Build and verification versionCode 115404, versionName 0f3f42ba, package me.yuki.folk. Built locally as a release; signed with CN=Matsuzaka Yuki, OU=FolkPatch, C=CN, SHA-256 a9:eb:a5:b7:02:eb:55:fb:5f:4b:1a:67:2a:71:33:a1:6a:7b:ca:ea:94:9c:de:43:c8:12:ef:26:c7:7d:e8:12 (V2), matching the kernel's trusted manager fingerprint. APK size 17,378,611 bytes, SHA-256 1d29c147443ce0986e3d9f5241f9d377dc1e9c7a60ea51c165737748c5302d2f. Unit tests and all four guards pass, and the APK was installed over the previous version on device.
About this version
- Version
- 0f3f42ba (115404)
- Size
- 16.57 MB
- Requires Android
- 8.0
- Target SDK
- 26
- Architecture
- arm64-v8a
- Downloads
- 29
- Updated
- Oct 31, 2026
- Package
- me.yuki.folk
Similar apps
Ratings & reviews
- 50
- 40
- 30
- 20
- 10