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 working (Zygisk, LSPosed, DenyList hiding) is much harder on an emulator, and a lot of standard advice fails on BlueStacks. Here is what actually works, learned the hard way on 5.22.232.1002 / Android 13.
Warning
Set expectations: Play Integrity does not pass on BlueStacks, at any level. I ran the full stack against it (ReZygisk, a Play Integrity Fix with a fresh fingerprint, the security-patch date corrected, root hidden with DenyList) and the API never returned a verdict: DroidGuard refuses to attest a virtual machine at all. The one emulator-passing result, MEETS_VIRTUAL_INTEGRITY, is reserved for Google Play Games on PC. What you get here is real: root, Zygisk through ReZygisk, LSPosed, and DenyList hiding for the apps that check for root themselves. What you do not get is a passing Play Integrity result, so anything that hard-gates on it (banking, a few games) stays shut.
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.
Play Integrity Fix installs and runs, and it spoofs the device fingerprint that apps read from system properties, which helps the ones that roll their own root and emulator checks. It does not make the Play Integrity API pass: on BlueStacks that call comes back unevaluated no matter how clean the fingerprint is, because DroidGuard will not attest a virtual machine. So install it for the fingerprint spoof if you want it, and don't chase a passing verdict. Two things still matter if you do: PIF's bundled print may be stale or banned (Google rotates them constantly), so grab a fresh pif.json; and PIF ships ARM libs, so on x86 BlueStacks its injection into GMS rides on ARM translation. Verify with a checker app, and read the result as "will not evaluate," not "one more tweak away."
ReZygisk → close & reopen → verify Zygisk injects → LSPosed → close & reopen. Add a Play Integrity Fix only if you want the fingerprint spoof; it will not make integrity pass here. Back up or 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 to 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