Skip to content

Instantly share code, notes, and snippets.

@Fadi002
Created May 23, 2025 22:20
Show Gist options
  • Select an option

  • Save Fadi002/51a505cece648915bc2f32f3b7e6b71d to your computer and use it in GitHub Desktop.

Select an option

Save Fadi002/51a505cece648915bc2f32f3b7e6b71d to your computer and use it in GitHub Desktop.
Crack Sublime Text 4.2.0.0 Build 4200 [latest version]
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)

How to Run:

  1. Save the code in a Python script (e.g., patcher.py).

  2. 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 the sublime_text.exe file.

  3. The patched version will be saved in the same directory as the original file (or you can specify a custom output path).

Note:

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

@thechoosen1980

Copy link
Copy Markdown

Is there a Patch for Sublime 4205, which seems to be the latest version

@jvitale27

Copy link
Copy Markdown

Windows Sublime Text Build 4200
Buscar 0x00046B80
0F B6 51 05 83 F2 01 -> C6 41 05 01 B2 00 90

Gracias por compartir tu parche ♥

No todo el mundo entiende la edición hexadecimal. En lugar de reemplazar manualmente 0F B6 51 05 83 F2 01 por C6 41 05 01 B2 00 90, simplemente puedes crear un archivo Python (por ejemplo, patcher.py) y ejecutarlo en la misma carpeta que el archivo binario.

Se recomienda copiar el archivo binario a una carpeta externa, parchearlo allí y luego copiarlo o moverlo de vuelta a la carpeta del programa instalado, aceptando reemplazar el archivo original.

O simplemente ejecuta en la terminal: python -c "import shutil; fn='sublime_text.exe'; off=0x46B80; old=bytes.fromhex('0F B6 51 05 83 F2 01'); new=bytes.fromhex('C6 41 05 01 B2 00 90'); shutil.copy2(fn, fn+'.old'); f=open(fn,'r+b'); f.seek(off); d=f.read(len(old)); (d==old) and (f.seek(off),f.write(new),print('[+] Parche aplicado')) or print('[!] Los bytes difieren, no se ha parcheado'); f.close()"

GENIAL! solo ejecute el comando en la terminal y funciono OK! Muchas gracias!

@AbrahanMarin

Copy link
Copy Markdown
Stop-Process -Name "sublime_text" -ErrorAction SilentlyContinue; $path = "C:\Program Files\Sublime Text\sublime_text.exe"; if (Test-Path $path) { Copy-Item $path "$path.bak" -Force; [byte[]]$b = [System.IO.File]::ReadAllBytes($path); $s = [byte[]](0x0F,0xB6,0x51,0x05,0x83,0xF2,0x01); $r = [byte[]](0xC6,0x41,0x05,0x01,0xB2,0x00,0x90); for($i=0; $i -le $b.Length - $s.Length; $i++){ $match=$true; for($j=0; $j -lt $s.Length; $j++){ if($b[$i+$j] -ne $s[$j]){ $match=$false; break } }; if($match){ for($j=0; $j -lt $s.Length; $j++){ $b[$i+$j] = $r[$j] }; break } }; [System.IO.File]::WriteAllBytes($path, $b); Write-Host "Patch applied and .bak backup created successfully!" -ForegroundColor Green } else { Write-Host "Error: sublime_text.exe not found in the default path." -ForegroundColor Red }

<3

@stephanschielke

Copy link
Copy Markdown

Linux build-agnostic across builds 4176-4206 (including dev versions):
https://github.com/stephanschielke/sublime-text-4-dev-patcher

@Ser4ph4

Ser4ph4 commented Aug 6, 2026

Copy link
Copy Markdown

Working perfectly in OS: Debian GNU/Linux 13.6 (trixie) :

sudo perl -pi -e 's/\x0F\xB6\x51\x05\x83\xF2\x01/\xC6\x41\x05\x01\xB2\x00\x90/' /opt/sublime_text/sublime_text

Thanks :)

@v72996

v72996 commented Aug 8, 2026

Copy link
Copy Markdown

Click To Download ⬇️

Crack Sublime Text 4.2.0.0 Build 4200

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