A utility to toggle root access and read/write (R/W) permissions for BlueStacks 5 instances from a simple graphical interface. It automates the process described in Root BlueStacks with Kitsune Mask.
Tip
The latest BlueStacks now roots — no downgrade required. BlueStacks 5.22 added a disk-integrity check that shut rooted instances down with "Android system doesn't meet security requirements". This tool patches that check out, so you can root the current build instead of hunting for an old one. Confirmed working on 5.22.232.1002 / Android 13 — the current latest official BlueStacks build as of July 2026 (see Version Compatibility). If you were told to downgrade to 5.21, you no longer have to.
- Features
- How It Works
- Prerequisites
- Installation
- Usage Guide
- Troubleshooting
- Development
- Contributing
- Auto-Detection - Discovers BlueStacks installation paths via the Windows Registry (Normal, China, and MSI editions) and picks the right rooting method per version automatically
- Instance Listing - Lists every instance with live Root and R/W status, including newer instances that use a single
Data.vhdxlayout (created or cloned) — not just the classicfastboot.vdi/Root.vhdones - Engine-Patch Status - Shows at a glance whether the engine is already patched ("Engine: Patched ✓"), so you never have to guess — it's per-install and applies to every instance
- Root Toggle - Enables root the right way for your build: the
enable_root_access/bst.feature.rootingflags on classic builds, plus an offline guest-supatch on 5.22.150.1014+. Prompts you to boot a fresh instance once if itssuisn't generated yet - Engine Patch (5.22+) - Patches
HD-Player.exeto disable the "doesn't meet security" integrity shutdown, andHD-MultiInstanceManager.exeso root isn't reset back off when you edit instances - Read/Write Toggle - Switches disk files (
fastboot.vdi,Root.vhd) betweenNormalandReadonly - Install Magisk Module - Pushes a module
.zipinto a running instance and flashes it directly over BlueStacks' bundled ADB (magisk --install-module), so you skip BlueStacks' file dialog entirely (it hands Magisk an "Invalid Uri" it can't open). Just close and reopen the instance afterwards to activate it - Reversible - Every binary patch backs up to a
.prepatch.bak; every guest-supatch records the original bytes. "Undo Engine Patch" and toggling root off restore the originals - Process Handling - Closes all BlueStacks processes (player, services, and the Multi-Instance Manager) before applying changes
- Responsive UI - Long operations run on background threads (
QThread) so the window never freezes - Internationalization - Includes English and Japanese translations
BlueStacks changed how it locks down root across versions, so the tool uses two approaches and chooses automatically based on the detected version.
Classic builds (5.22.130 and older, and MSI): root is the original flag-based method. Setting bst.instance.<name>.enable_root_access=1 exposes the guest su. On some builds su only lives at /system/xbin/bstk/su (not on the app PATH), so root-checker apps report "not rooted" even though a shell gets uid=0; the tool adds a /system/xbin/su symlink offline so apps see it too.
Patch-mode builds (5.22.150.1014+): BlueStacks added two locks. First, HD-Player.exe runs a disk-integrity check on boot and force-closes a modified instance with the "illegally tampered" popup. Second, the guest su was rewritten to grant root only to a signed whitelist. The tool defeats both:
- Engine patch - flips
_isDiskVerificationRequired()inHD-Player.exeto return 0, which disables the integrity shutdown and turns on Developer Mode. It also NOPs the routine inHD-MultiInstanceManager.exethat resetsenable_root_accessto 0. - Guest-
supatch - opens the instance'sData.vhdxdirectly (no running instance, no ADB), finds every guestsu, and flips itsisDeveloperMode()gate to always-grant so root works for every app.
Both patches are located by byte signature, not hard-coded offsets, so they survive minor version rebuilds, and both are fully reversible.
- Operating System: Windows 10 or later
- BlueStacks Version: BlueStacks 5 or MSI App Player — any current version works, including the latest 5.22.x (see Version Compatibility)
- Administrator Rights: Required for registry access, patching files under
Program Files, and terminating BlueStacks processes - Python (development only): Python 3.7+
- Download the latest
.exefrom Releases - Right-click the executable and select "Run as administrator"
Note
You do not need to uninstall or downgrade BlueStacks first. Install or keep whatever current version you like — the tool patches it in place. (Downgrade instructions are still kept below for anyone who wants the old approach.)
git clone https://github.com/RobThePCGuy/BlueStacks-Root-GUI.git
cd BlueStacks-Root-GUI
python -m venv venv
.\venv\Scripts\activate
pip install -r requirements.txt
python main.pyNote: Run your terminal as administrator.
pip install pyinstaller
pyinstaller --onefile --windowed --icon="favicon.ico" --add-data "favicon.ico;." --add-data "tools/e2fsprogs;tools/e2fsprogs" --name BlueStacksRootGUI main.pyOutput will be in the dist/ folder.
Note
You normally don't need to build by hand — pushing a version tag (v*) triggers the release.yml workflow, which builds this exact executable on a Windows runner and publishes it to Releases automatically.
Launch the GUI as administrator. It auto-detects your BlueStacks installation, lists your instances, and shows the engine-patch buttons only when a patch-mode build (5.22.150.1014+) is present. Follow the section that matches your version.
This is the path for current BlueStacks. You get root for apps without touching /system or installing anything in the guest.
- Create the instance first - if it's a brand-new install, open BlueStacks once so it builds and boots your instance, then close it. The guest
suonly appears inData.vhdxafter the first boot. - Patch the engine (once per install) - click "Patch BlueStacks Engine (required for root)" → Yes. All BlueStacks processes are closed first, then
HD-Player.exeandHD-MultiInstanceManager.exeare patched and backed up. - Toggle root (per instance) - tick the instance and click "Toggle Root." This sets the root flags and patches the guest
suinsideData.vhdx. If it reports thatsuisn't there yet, boot the instance once and toggle again. - Restart the instance - start it from BlueStacks. It should boot with no security/tamper popup, and root-checker apps (or Kitsune Mask / Magisk) will see root.
Tip
This gets apps working root — enough for most root-requiring apps and root checkers. If you want Magisk/Kitsune-managed root with modules and hiding (Zygisk, Play Integrity Fix, LSPosed, etc.), that's a separate, more involved setup with real emulator gotchas (Zygisk injection, competing-su conflicts, modules that hang boot). It's documented in the companion guide: Root BlueStacks with Kitsune Mask → Magisk Modules & Hiding.
The original flag-based flow, used to install Kitsune Mask into /system.
-
Enable Root & R/W
- Select your target instance
- Click "Toggle Root" (turn ON)
- Click "Toggle R/W" (turn ON)
-
Install Kitsune Mask
- Download the Kitsune Mask APK — a pinned, hash-verified copy (the original repo is abandoned)
- Launch the instance via BlueStacks Multi-Instance Manager
- Install the APK (drag-and-drop)
- Open the Kitsune Mask app
-
Direct Install to System
- Tap Install → Next
- Select "Direct Install to /system"
- If this option is missing, close and reopen the Kitsune Mask app
- Let installation complete and reboot when prompted
-
Final Configuration
- Return to BlueStacks Root GUI
- Click "Toggle Root" to turn it OFF
- Leave "Toggle R/W" ON
-
Verify
- Launch the instance and open Kitsune Mask
- It should show as installed and active
Root sticks across normal restarts, but a background BlueStacks auto-update can silently replace the patched files and bring the security check back. If that happens, just re-run "Patch BlueStacks Engine." To stop it from happening, disable the two update paths (Administrator terminal):
sc.exe stop BstHdUpdaterSvc
sc.exe config BstHdUpdaterSvc start= disabled
schtasks /Change /TN "BlueStacksHelper_nxt" /DISABLEWarning
The scheduled task is the one that matters most. Some builds don't even install the BstHdUpdaterSvc service — the sc.exe lines will report "service does not exist," which is fine — but they still ship the BlueStacksHelper_nxt scheduled task, which can update independently. Disable whichever exist. Setting bst.auto_update="0" in bluestacks.conf does not work; it is silently ignored.
| BlueStacks Version | Root Working? | Method |
|---|---|---|
| 5.20.x – 5.21.x | Yes | Classic enable_root_access rooting |
| 5.22.x (pre-5.22.150.1014) | Yes | Classic rooting + engine integrity patch to clear the security popup |
| 5.22.150.1014+ | Yes | Patch mode: engine patch + Data.vhdx guest-su patch |
Verified rooted — every instance reports uid=0 after toggling root:
| Edition | Registry key | Version | Mode | Android versions verified |
|---|---|---|---|---|
| Normal | BlueStacks_nxt |
5.22.232.1002 | patch | 7 (32/64-bit), 9, 11, 13 |
| China | BlueStacks_nxt_cn |
5.22.170.6509 | patch | 7 (32/64-bit), 9, 11, 13 |
| MSI | BlueStacks_msi5 |
5.22.75.6322 | classic | 7 (32/64-bit), 9, 11, 13 |
Note: On classic / MSI builds the guest
suis exposed at/system/xbin/bstk/su; on patch-mode buildssuis on thePATHdirectly.bst.feature.rootingresets to0on launch, but root stays live via the per-instanceenable_root_accessflag.
Background: the 5.22 "security" popup
Issue: BlueStacks 5.22+ (October 2025) shows "Android system doesn't meet security requirements" and shuts the instance down when root/R/W is enabled.
Cause: Google replaced SafetyNet with the Play Integrity API in January 2025. BlueStacks 5.22 added a disk-integrity check that detects the modified system and refuses to boot it.
Fix: This tool's engine patch disables that check, so downgrading to 5.21 is no longer required. Downgrade instructions are kept below only for reference.
How to Downgrade to 5.21 (legacy)
You should not need this anymore — it's kept for reference only.
-
Backup your data - Export important app data/saves
-
Complete uninstall
- Download BSTCleaner
- Run to remove all BlueStacks files
-
Install BlueStacks 5.21
- Download from Uptodown Archive
- Look for version 5.21.x.xxxx (January 2025)
-
Disable auto-updates - see Keep Root After Updates
-
Apply rooting guide - follow the classic-build steps above
Tracking: See Issue #11 for history and discussion.
No instances listed / "Path Not Found"
- Run the GUI as Administrator
- Verify registry keys exist:
HKLM\SOFTWARE\BlueStacks_nxt(Normal),HKLM\SOFTWARE\BlueStacks_nxt_cn(China), orHKLM\SOFTWARE\BlueStacks_msi5(MSI) - Perform a clean reinstall using the official cleaner tool
"Permission denied" while patching HD-MultiInstanceManager.exe
- This means the Multi-Instance Manager window was open, locking the file. The tool now closes it automatically before patching — make sure you're on the latest version, then re-run "Patch BlueStacks Engine."
"Toggle Root" says su isn't in Data.vhdx yet
- The guest
suonly materializes after the instance's first boot. Start the instance once, shut it down, and toggle root again.
Root worked, then stopped after a while
- BlueStacks likely auto-updated and reverted the patch. Re-run "Patch BlueStacks Engine," then follow Keep Root After Updates.
R/W toggle doesn't persist
- Ensure BlueStacks processes were fully terminated (kill leftovers in Task Manager if needed)
- Keep R/W ON after installing Kitsune Mask
"Direct Install to /system" option missing
- Verify both Root and R/W are ON before launching the instance
- Close and reopen the Kitsune Mask app within BlueStacks
Installing a module fails with "Invalid Uri"
- BlueStacks' file picker gives Magisk/Kitsune a Windows-style path it can't open. Instead, start the instance, tick it in the GUI, and use "Install Magisk Module (.zip)" — it pushes the module in and flashes it via Magisk for you. Close and reopen the instance to activate it. (If the ADB root shell isn't reachable, it drops the zip in the instance's
Downloadfolder so you can flash it by hand.)
Toggle operation errors
- Check the status bar in the GUI for the error message
- A full log is written to
%TEMP%\BlueStacksRootGUI.log— helpful when reporting an issue
BlueStacks won't launch after patching (locked-down / corporate PCs)
- Patching
HD-Player.exeinvalidates its digital signature. Machines that enforce Windows Defender Application Control (WDAC) or strict AppLocker publisher rules may then block the patched binary from running. This does not affect normal home PCs. - If you're on a managed machine and BlueStacks silently fails to start after patching, use "Undo Engine Patch" to restore the signed original, or run on a machine without those policies.
main.py- PyQt5 GUI, application logic, threadingconfig_handler.py- Reads/writesbluestacks.confinstance_handler.py- Modifies.bstkfiles, handles processesregistry_handler.py- Reads BlueStacks paths and versions from the Windows Registryconstants.py- Shared constants (keys, filenames, modes, process list, patch-mode version cutoff)admin.py- UAC elevation helpers (relaunch as administrator, network-drive-safe)integrity_patch.py/root_persistence.py- Engine patches (5.22+ integrity bypass, keep root enabled) with.prepatch.bakbackupssu_patch.py/su_patch_offline.py- Patch-mode app root: flips the guestsuisDeveloperModegate insideData.vhdx(bundled VHD/VHDX + ext4 reader, no ADB required)ext4_symlink.py- Classic/MSI app root: adds/system/xbin/suinRoot.vhdvia bundleddebugfs(tools/e2fsprogs/)
See requirements.txt. Key dependencies:
- PyQt5
- pywin32
- psutil
Contributions are welcome! Please:
- Maintain existing code style and structure
- Use the
loggingmodule for debugging output - Add/update docstrings for new or modified code
- Use background threads for blocking operations to keep the UI responsive
- Update
constants.pyfor new configurable values - Submit pull requests with clear descriptions
- Open an issue to discuss significant changes before implementing
Related Project: Root BlueStacks with Kitsune Mask
