Skip to content

Instantly share code, notes, and snippets.

@knot126
Last active April 22, 2026 20:40
Show Gist options
  • Select an option

  • Save knot126/7a464e04596836e3692ae83395bd8065 to your computer and use it in GitHub Desktop.

Select an option

Save knot126/7a464e04596836e3692ae83395bd8065 to your computer and use it in GitHub Desktop.
Prism Launcher crack patches

Prism Launcher cracking

These are some simple binary patches to Prism Launcher that allow using offline accounts without restrictions in the official release builds, for those too lazy to recompile but also don't want to risk forks that could contain malware. Most patches are less than 10 bytes (the ones for older versions are as little as four!) so they should be easily verified as safe.

Applying the patches

You can use something like hexed.it to apply the patches.

  1. Open the main prismlauncher.exe (Windows) or prismlauncher1 (Linux) binary from the official build in your hex editor.
  2. Paste the location of the patch into the "Go to" box and click enter (or something like G or Ctrl+G on other hex editors)
  3. With the cursor at the right location, type in the patch bytes or paste them as hexidecimal. They should overwrite the bytes that used to be there.
  4. Export the modified binary and replace the uncracked EXE/binary with the one you just patched.

1 For versions 10.0.0 and later, make sure open the binary in shared/bin/prismlauncher, which is the real main binary, and not the one in bin/prismlauncher, which is just a stub that launches the main binary.

Extra MacOS instructions

In MacOS, the ".app" file is actually not a file, but a folder! To find the actual binary you need to edit, you need to right click on the "Prism Launcher.app", then click View Contents, then go to the Contents/MacOS folder where you should see the actual binary named prismlauncher.

Due to the way code signing works on MacOS, you will need to remove and re-add the ad-hoc signature after you edit the binary:

codesign --remove-signature <path to Prism Launcher.app folder>
codesign -s - -f --deep <path to Prism Launcher.app folder>

You might also need to make sure the binary is executable by running chmod +x <path to Prism Launcher.app>/Contents/MacOS/prismlauncher

Patches: 9.x

This is an older version, but it only requires AccountList::anyAccountIsValid() to be patched and is thus very easy to do. If you don't need the newer versions, this will probably give you the best exprience.

Windows

Build Location / Go to Patch
9.4 Portable MSVC x64 0x139b40 b8 01 00 00 00 c3
9.4 Portable MinGW x64 0x10acc0 b0 01 c3
9.4 Portable MSVC ARM64 0x16aa98 20 00 80 52 c0 03 5f d6

Linux

Build Location / Go to Patch
9.4 Portable Qt6 x64 0x36a910 b8 01 00 00 00 c3

MacOS

Build Location / Go to Patch
9.4 (ARM64) 0xf0abd4 (ARM64+0x122bd4) 20 00 80 d2

Patches: 10.x

I've only done patches for Linux on 10.0.1 for now, since these patches are a bit more involved. 11.x will make further changes and should be coming sometime soon, so I've decided to just wait until that comes out.

Linux 10.0.1 Portable x64

Location Patch Info
0x4ffd50 b8 01 00 00 00 c3 Forces anyAccountIsValid() to return true
0x38cb16 48 e9 Makes the jump to launchInstance() unconditional to ignore aborting launch when not in demo mode
0x7fd920 b8 00 00 00 00 c3 Forces askPlayDemo() to return false (technically optional)

Patches: 11.x

This version has some refactoring that is more favourable to binary patching, though the patch I use partially breaks MS accounts in favour of simplifying patch creation - though supporting them would be moot anyway, so I'm mostly fine with that.

NOTE: This patch also results in the launcher crashing if no account is selected and an account is started in normal/offline mode, though that shouldn't be a hard fix to do once I'm willing to polish it up more.

Linux 11.0.2 Portable x64

Location Patch
0x3dcd40 B8 01 00 00 00 C3
0x551970 8B 87 9C 00 00 00 89 87 A0 00 00 00 B8 01 00 00 00 C3

Linux 11.0.0-pre1 Portable x64

Location Patch
0x3d7840 B8 01 00 00 00 C3
0x54bd60 8B 87 9C 00 00 00 89 87 A0 00 00 00 B8 01 00 00 00 C3

Explaining it

The patch for decideLaunchMode replaces it enitrely with the following assembly:

MOV EAX, dword ptr [rdi + 0x9c] ; Load m_wantedLaunchMode into EAX
MOV dword ptr [rdi + 0xa0], EAX ; Save EAX into m_actualLaunchMode
MOV EAX, 0x1                    ; Set EAX to 1 (EAX contains the return value by convention)
RET                             ; Return

You can verify that here.

This is eqivlent to replacing the function with:

this->m_actualLaunchMode = this->m_wantedLaunchMode;
return LaunchDecision::Continue;

What these patches do

For 9.x: These patches simpily modify AccountList::anyAccountIsValid() to always return true. From my exprience this seems to be enough to bypass the DRM in Prism Launcher as of 9.4.

For 10.x: In addition to patching anyAccountIsValid(), it is now required to patch an if statement in LauncherController::login() that prevents launching if no microsoft accounts that own minecraft are added, and optionally to patch LaunchController::askPlayDemo() to remove the annoying "Do you want to play in demo mode?" pop-up.

For 11.x: It seems like the code has been refactored, moving the account checking out to LaunchController::decideLaunchMode(). We actually benefit from this, since we can just replace decideLaunchMode and we don't need to patch out Demo-related stuff anymore.

Known problems

It seems possible there are issues related to offline LAN servers still trying to authenticate anyway, but I'm not exactly sure. It mainly seems to affect Windows AMD64 builds, but I have gotten it once under Linux. This is also known to occur with source cracks where this mod has been suggested as a fix.

Notes

  • For Linux:
    • In 9.x the portable build main binary is <launcher root>/bin/prismlauncher.
    • In 10.x it has changed to <launcher root>/shared/bin/prismlauncher and the original <launcher root>/bin/prismlauncher appears to be some kind of stub.
  • In 10.x, some changes were made to always check for a Microsoft account in offline mode. Multiple patches are now required.
  • For 9.x, it's most likely possible to write an automated script for Linux and Windows MinGW versions to find the symbol location and patch it, even in versions that aren't yet supported, since they ship with the symbol table.
  • To answer the question "Why not just edit the source code?": Because for me, it's more fun than trying to make 3 build sytems work and installing 760 depencies just to change a few instructions. ;P

Source forks

For fun here is a list of source forks of Prism that I am aware of which allow using offline accounts freely:

I haven't tested or verified any of them as safe, but they look legit, and if you're comfortable using them they will probably be updated faster than these patches.

@JoseskVolpe

Copy link
Copy Markdown

I've made a patch file for 10.x that reverts these commits. No bypass are required, just add an offline account and play.
It's not for binary, you must clone PrismLauncher, apply the patch and compile.

https://codeberg.org/JoseskVolpe/PrismLauncher-Patch

@knot126

knot126 commented Jan 15, 2026

Copy link
Copy Markdown
Author

Cool :3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment