Root your BlueStacks 5+ or MSI App Player emulator so apps that require root work. This guide covers both the easy way (a one-click tool) and the fully manual way (Notepad only).
Important
The "latest version can't be rooted" advice is out of date. BlueStacks 5.22 added a disk-integrity check that shuts modified instances down with "Android system doesn't meet security requirements." You no longer have to downgrade to get around it — BlueStacks Root GUI patches that check out and roots the current build. Confirmed working on 5.22.232.1002 / Android 13 — the current latest official BlueStacks build as of July 2026. The manual downgrade method below still works and needs no external tool, but it is no longer the only option.
| You want… | Use | Needs the app? | BlueStacks version |
|---|---|---|---|
| The easiest route, on any current version | Method A: BlueStacks Root GUI | Yes (free, portable, open-source) | Any, including the latest 5.22.x |
| No external tools, Notepad only | Method B: Manual downgrade | No | 5.22.130.1019 (last build without the integrity check) |
| Magisk-managed root: modules, Zygisk, hiding | Magisk Modules & Hiding | Either, then extra steps | Any |
Warning
Whichever path you pick, read Stop Auto-Updates first. A background BlueStacks updater will quietly upgrade your install and undo everything — this is the single most common reason people's root "randomly stops working."
A free, portable, open-source app that toggles root and read/write with buttons and works on the latest BlueStacks — no downgrade, no Notepad.
- Download the latest
.exefrom BlueStacks-Root-GUI Releases. - Right-click it → Run as administrator.
- Follow its README for the two-click flow (Patch Engine → Toggle Root). It auto-detects your instances and shows whether the engine is already patched.
That's the whole thing for app-level root. For Magisk modules/hiding on top, see Magisk Modules & Hiding.
Full app docs: BlueStacks-Root-GUI.
This roots by editing two config files and installing Kitsune Mask into /system — no external tools, just your PC, Notepad, and the Kitsune Mask APK.
Important
The manual method requires BlueStacks 5.22.130.1019 or older. Per @AndnixSH, 5.22.130.1019 is the last build without the disk-integrity check, so a modified /system boots normally. On 5.22.130.1020+ the check refuses to boot a modified system — those builds can still be rooted, but only by patching the check out first, which is what the app does for you (or the advanced hand-patch).
Note
Why install into /system? Kitsune Mask (a Magisk Delta fork) is normally a systemless root tool that lives in the boot ramdisk. Emulators like BlueStacks have no traditional boot image, so it must be installed directly to the read-only /system partition. The Notepad edits below temporarily make that partition writable so the install can happen.
- Administrator rights — you'll edit files under
C:\ProgramData. - Kitsune Mask APK — download the pinned, hash-verified copy from this repo's Releases. It's the exact
27.001build confirmed working on BlueStacks this guide was written against, with a published SHA-256 so you can verify you got the untampered file. (The original Kitsune repo is abandoned and third-party mirrors 404 or wrap the download in ads — this avoids both.) Kitsune Mask is a GPL-3.0 fork of Magisk Delta (upstream: HuskyDG). - BlueStacks 5.22.130.1019 (or older) or MSI App Player — a fresh install gives the most consistent results.
This guide uses master-instance names; adapt to yours:
Tiramisu64 = Android 13 Rvc64 = Android 11 Pie64 = Android 9
- Uninstall any existing BlueStacks with the official BlueStacks cleaner.
- Install BlueStacks 5.22.130.1019 (or MSI App Player). Immediately do Stop Auto-Updates so it can't upgrade itself out from under you.
- Open
C:\ProgramData\BlueStacks_nxt\bluestacks.conf(MSI:BlueStacks_msi5) in Notepad as administrator. - Set these two lines (add them if missing), replacing
Rvc64with your instance:bst.feature.rooting="1"bst.instance.Rvc64.enable_root_access="1"
- Save.
- Go to
C:\ProgramData\BlueStacks_nxt\Engine\Rvc64. - In
Android.bstk.inand the instance'sRvc64.bstk, changefastboot.vdiandRoot.vhdfromtype="Readonly"totype="Normal":- <HardDisk ... location="fastboot.vdi" format="VDI" type="Readonly" /> - <HardDisk ... location="Root.vhd" format="VHD" type="Readonly"/> + <HardDisk ... location="fastboot.vdi" format="VDI" type="Normal" /> + <HardDisk ... location="Root.vhd" format="VHD" type="Normal"/>
- Save both files.
- Launch the instance from the Multi-Instance Manager and install the Kitsune Mask APK (drag-and-drop the APK onto the window).
- Open Kitsune Mask → Install → Next → Direct Install to /system. (If that option is missing, fully close and reopen the app inside the emulator.)
- Let it finish, then close BlueStacks completely.
- Reopen
bluestacks.confand set both back to0:bst.instance.Rvc64.enable_root_access="0"bst.feature.rooting="0"
- Leave the R/W (
type="Normal") changes from Step 3 as-is. - Save. Launch the instance — Kitsune Mask is installed and root works.
[!IMPORTANT] Why revert the flags? BlueStacks' own built-in
suand Kitsune'ssucan't both be active — if both are, Magisk reports "asubinary not from Magisk has been detected" (Abnormal State) and modules won't run. Turningenable_root_accessback to0removes BlueStacks'suso Kitsune's is the only one. (In the app, "Toggle Root OFF" does the same thing.)
BlueStacks will silently update itself and undo your root — re-locking the integrity check (patched installs) or upgrading you off 5.22.130.1019 (manual installs). Kill both update paths in an Administrator terminal:
sc.exe stop BstHdUpdaterSvc
sc.exe config BstHdUpdaterSvc start= disabled
schtasks /Change /TN "BlueStacksHelper_nxt" /DISABLEWarning
Disable both, and don't panic if the service is missing. On some builds BstHdUpdaterSvc isn't installed — the sc.exe lines will say "service does not exist," which is fine. The scheduled task BlueStacksHelper_nxt is the vector that's always present and can update independently, so it's the important one. Setting bst.auto_update="0" in bluestacks.conf does not work — it is silently ignored.
Getting app root is the easy part. Getting a full Magisk/Kitsune stack — Zygisk, Play Integrity Fix, LSPosed, DenyList hiding — is much harder on an emulator, and a lot of standard advice fails on BlueStacks. Here's what actually works, learned the hard way on 5.22.232.1002 / Android 13.
Warning
Set expectations: STRONG Play Integrity is unreachable on any emulator (it needs a hardware-backed key BlueStacks doesn't have). BASIC/DEVICE can pass with a well-tuned Play Integrity Fix. General root-hiding (DenyList) works; hardware attestation does not.
BlueStacks installs Magisk in System Mode (no boot ramdisk), and its custom kernel blocks the usual Zygisk injection.
- Zygisk Next fails here — its daemon starts but the kernel denies every injection (
permission denied … NewInitProcess), solibzygisknever loads into zygote and no Zygisk module works. - ReZygisk works — its ptrace-based injector gets past the kernel block. Verified:
libzygisk.somaps into both zygotes,zygisk-ptrace64runs, no denials. - Magisk's built-in Zygisk stays off (ReZygisk replaces it).
Install ReZygisk, reboot, done. It's the base everything else sits on.
With ReZygisk, Magisk's app shows "Zygisk: No" and labels modules (like Play Integrity Fix) "suspended because Zygisk is not enabled." This is a known cosmetic bug, not a real failure — the modules still load and run via ReZygisk. It happens because Magisk's own Zygisk flag is off while ReZygisk does the real work. Confirmed by the ReZygisk maintainers (ReZygisk #45).
Warning
Do not "fix" the label by enabling Magisk's built-in Zygisk — that can conflict with ReZygisk and bootloop the instance. Verify functionality with a checker app, not the label.
LSPosed runs fine on top of ReZygisk — verified Activated (1.9.2, Zygisk) on 5.22.232.1002 / Android 13. After installing any module, fully close the instance and reopen it to activate it. The first boot after adding LSPosed is a little slower while Android recompiles (dex2oat), so give it a minute.
If BASIC still fails after PIF is installed:
- Force-stop and clear data on Google Play Services, then re-check — GMS caches its real identity and must re-read the spoof.
- PIF's bundled device fingerprint may be stale/banned (Google bans them constantly) — grab a fresh
pif.json. - PIF ships ARM libs; on x86 BlueStacks whether it injects into GMS depends on ARM translation. Verify with a Play Integrity checker app, not by reading props.
ReZygisk → close & reopen → verify Zygisk injects → Play Integrity Fix → close & reopen → LSPosed → close & reopen. Back up / clone the instance once you have a known-good stack.
Picking a module zip through BlueStacks' Windows Picker fails with Copying zip to temp directory / Invalid Uri — Magisk can't open a Windows-side file reference. Instead, get the zip into Android's own storage first (drag-drop it onto the window → it lands in Android's Downloads, or push it with adb), then pick it from internal storage. Or skip the picker entirely and install over adb:
adb connect 127.0.0.1:<port> # BlueStacks ADB port (Settings - Advanced); it changes per reboot
adb push module.zip /data/local/tmp/
adb shell su -c 'magisk --install-module /data/local/tmp/module.zip'You can root a current (5.22.130.1020+) build without the app, but it means binary-patching the integrity check out of HD-Player.exe yourself — the exact thing BlueStacks Root GUI automates.
The patch: inside HD-Player.exe, the function _isDiskVerificationRequired() is forced to return 0 (xor eax,eax; ret, bytes 31 C0 C3), which disables the "illegally tampered" shutdown. The catch is locating it — it's found by a byte-signature near the unlock_player.bin string, and the file offset differs per build, so there's no single universal offset to hand you. The reference implementation (signatures, exact bytes, and the HD-MultiInstanceManager.exe reset patch) is open source in integrity_patch.py and root_persistence.py.
Note
For all but the most determined hex-editors, the app is the practical way to do this on the latest build — it finds the signature across builds, backs up the original, and is reversible. This section exists for transparency, not because hand-patching is recommended.
BlueStacks 5.22 (Oct 2025) added a disk-integrity check that rejects a modified /system on boot. Two fixes:
- Root the current build with BlueStacks Root GUI (patches the check out), or
- Use the manual downgrade to
5.22.130.1019(the last build without the check), then Stop Auto-Updates.
BlueStacks' own su is competing with Magisk's. Remove BlueStacks' su: turn root off (app: Toggle Root OFF; manual: set enable_root_access and bst.feature.rooting back to 0), keep R/W on, reboot. Magisk becomes the only su.
Almost always the Step 3 R/W edit didn't take, or BlueStacks wasn't fully closed when you edited. Confirm fastboot.vdi and Root.vhd are type="Normal" in both .bstk.in and .bstk. Also try fully closing and reopening the Kitsune app inside the emulator.
Cosmetic with ReZygisk — see Magisk Modules & Hiding. The modules still work.
You picked the zip via the Windows Picker. Get it into Android storage first, or install over adb — see the Invalid Uri trap.
A module is stalling boot. Remove/disable the offending module, or fall back to a clean instance.
Open Notepad as administrator before opening the file.
| BlueStacks Version | Rootable? | How |
|---|---|---|
| 5.20.x – 5.21.x | Yes | Classic flags; no integrity check |
| ≤ 5.22.130.1019 | Yes | Manual (Notepad) or app — last build with no integrity check |
| 5.22.130.1020+ (incl. latest 5.22.232.x) | Yes | App patches the integrity check out (or hand-patch) |
Per @AndnixSH: "5.22.130.1019 is the last working version without disk integrity check." Everything above it needs the check patched — which the app does. See Issue #11 for the full history.
Q: Do I have to downgrade to root now?
A: No. That advice is outdated. BlueStacks Root GUI roots the latest build. Downgrading to 5.22.130.1019 is only needed for the fully-manual, no-app method.
Q: My root stopped working after a while — why? A: BlueStacks auto-updated and undid it. Do Stop Auto-Updates. On a patched install you can also just re-run the engine patch.
Q: I can't find C:\ProgramData.
A: It's hidden. In File Explorer → View → check Hidden items.
Q: Which Kitsune Mask build?
A: The pinned 27.001 copy from Releases (SHA-256 published so you can verify it). Older builds like 26.4 also work. If you hit "a su binary not from Magisk," that is not caused by the build — it's BlueStacks' own competing su; see the Abnormal State fix.
Q: Can I undo the root?
A: Yes. App: Toggle Root off. Manual: set the two bluestacks.conf values back to 0 and uninstall the Kitsune Mask app.
Q: Is SELinux enforcing after rooting?
A: No — it's Disabled on the BlueStacks 5 guest by default, and neither method changes that (they only edit bluestacks.conf and flip disk flags). Verify in a terminal/adb shell:
getenforce # expect: Disabled
getprop ro.boot.selinux
Confirmed on 5.22.x Android 9/11/13 (all Disabled), but it can vary — check your own. If you need SELinux Enforcing (some anti-cheat), that requires an extra magiskpolicy step beyond this guide.
If this guide helped, a star on the repo helps others find it. · GitHub Repository