import sys
import os
NOP = 0x90
offsets_and_values = {
0x00030170: 0x00,
0x000A94D0: NOP, 0x000A94D1: NOP, 0x000A94D2: NOP, 0x000A94D3: NOP, 0x000A94D4: NOP, 0x000A94D5: NOP, 0x000A94D6: NOP, 0x000A94D7: NOP, 0x000A94D8: NOP, 0x000A94D9: NOP, 0x000A94DA: NOP, 0x000A94DB: NOP, 0x000A94DC: NOP, 0x000A94DD: NOP, 0x000A94DE: NOP, 0x000A94DF: NOP, 0x000A94E0: NOP, 0x000A94E1: NOP, 0x000A94E2: NOP, 0x000A94E3: NOP, 0x000A94E4: NOP, 0x000A94E5: NOP, 0x000A94E6: NOP, 0x000A94E7: NOP, 0x000A94E8: NOP, 0x000A94E9: NOP, 0x000A94EA: NOP, 0x000A94EB: NOP, 0x000A94EC: NOP, 0x000A94ED: NOP, 0x000A94EE: NOP, 0x000A94EF: NOP, 0x000A94F0: NOP, 0x000A94F1: NOP, 0x000A94F2: NOP, 0x000A94F3: NOP, 0x000A94F4: NOP, 0x000A94F5: NOP, 0x000A94F6: NOP, 0x000A94F7: NOP, 0x000A94F8: NOP, 0x000A94F9: NOP, 0x000A94FA: NOP, 0x000A94FB: NOP, 0x000A94FC: NOP, 0x000A94FD: NOP, 0x000A94FE: NOP, 0x000A94FF: NOP, 0x000A9500: NOP, 0x000A9501: NOP, 0x000A9502: NOP, 0x000A9503: NOP, 0x000A9504: NOP, 0x000A9505: NOP, 0x000A9506: NOP, 0x000A9507: NOP, 0x000A9508: NOP, 0x000A9509: NOP, 0x000A950A: NOP, 0x000A950B: NOP, 0x000A950C: NOP, 0x000A950D: NOP, 0x000A950E: NOP, 0x000A950F: NOP,
0x001C6CCD: 0x02,
0x001C6CE4: 0x00,
0x001C6CFB: 0x00,
}
def patch_exe(input_file, output_file=None):
output_file = output_file or f"{os.path.splitext(input_file)[0]}_patched.exe"
try:
with open(input_file, 'rb') as f:
data = f.read()
patched_data = bytearray(data)
for offset, value in offsets_and_values.items():
if offset < len(patched_data):
patched_data[offset] = value
with open(output_file, 'wb') as f:
f.write(patched_data)
print(f"[+] Patch applied successfully! Saved as: {output_file}")
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python patcher.py <input_file> [output_file]")
else:
patch_exe(sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else None)-
Save the code in a Python script (e.g.,
patcher.py). -
Open the terminal/command prompt and run the script like so:
python patcher.py "path_to_sublime_text.exe"Replace
"path_to_sublime_text.exe"with the actual path to thesublime_text.exefile. -
The patched version will be saved in the same directory as the original file (or you can specify a custom output path).
Please be aware that even after applying the patch, the status may still display as (UNREGISTERED). This is normal, and you can safely disregard this message because the app is already activited.
big thanks to @AdvDebug





















Build 4200 · macOS · Universal Binary
(Apple Silicon native + x86_64 Rosetta)
Verified on macOS 26 / Apple Silicon, Sublime Text Build 4200 (
CFBundleVersion4200).4aa67b38ccfcc37a2e7af0239750f88950adbbfb5e5092bb83c749146378126c88859ce97336a17b4e3eb9fad1f37cf41. Quit Sublime Text
2. Backup
3. Clone ARM64 patcher
Pattern hits on clean Build 4200 universal binary (each exactly once):
628F02940xEF35705D8F02940xEF3584F657BDA9F44F01A9FD7B02A9FD8300918F910A940xEFADA4E6031EAAC7B80A940xEF9E24F657BDA9F44F01A9FD7B02A9FD830091FF430CD10xEF9B4Cx86_64 flag-store (Rosetta slice), offset
0x290500:Reference: qzzhoulu1995/sublime · patch_sublime.sh
4. Patch (ARM64 + x86_64)
Expected
patch.pyoutput: 5 locations patched.5. Install + re-sign
6. Verify bytes
Expected patched md5:
50adbbfb5e5092bb83c749146378126cLaunch check: start. Help → About — Remove License in Help menu = patch OK. Title bar may still show
(UNREGISTERED).Restore
Sublime updates overwrite the patch — re-run after upgrade.