Skip to content

Instantly share code, notes, and snippets.

@JerryLokjianming
Last active November 19, 2024 12:13
Show Gist options
  • Save JerryLokjianming/71dac05f27f8c96ad1c8941b88030451 to your computer and use it in GitHub Desktop.
Save JerryLokjianming/71dac05f27f8c96ad1c8941b88030451 to your computer and use it in GitHub Desktop.
Crack Sublime Text 3.2.2 Build 3211 and Sublime Text 4 Alpha 4098 with Hex

How to Crack Sublime Text 3.2.2 Build 3211 with Hex Editor (Windows | Without License) ↓

  1. Download & Install Sublime Text 3.2.2 Build 3211
  2. Visit https://hexed.it/
  3. Open file select sublime_text.exe
  4. Offset 0x8545: Original 84 -> 85
  5. Offset 0x08FF19: Original 75 -> EB
  6. Offset 0x1932C7: Original 75 -> 74 (remove UNREGISTERED in title bar, so no need to use a license)
  7. Export File and save it to location you want
  8. Backup sublime_text.exe file (just rename)
  9. Copy sublime_text.exe modified to directory Sublime Text 3
  10. Happy Coding :)
Screenshot

Screenshot


How to Crack Sublime Text 4 Alpha 4098 with Hex Editor (Windows | Without License) ↓

  1. Download & Install Sublime Text 4 Alpha 4094
  2. Visit https://hexed.it/
  3. Open file select sublime_text.exe
  4. Go to Address: 0000A700 change 80 38 00 to FE 00 90
  5. Export File and save it to location you want
  6. Backup sublime_text.exe file (just rename)
  7. Copy sublime_text.exe modified to directory Sublime Text 4 (i.e C:\Program Files\Sublime Text)
  8. Use this License
----- BEGIN LICENSE ----- 
TwitterInc 
200 User License 
EA7E-890007 
1D77F72E 390CDD93 4DCBA022 FAF60790 
61AA12C0 A37081C5 D0316412 4584D136 
94D7F7D4 95BC8C1C 527DA828 560BB037 
D1EDDD8C AE7B379F 50C9D69D B35179EF 
2FE898C4 8E4277A8 555CE714 E1FB0E43 
D5D52613 C3D12E98 BC49967F 7652EED2 
9D2D2E61 67610860 6D338B72 5CF95C69 
E36B85CC 84991F19 7575D828 470A92AB 
------ END LICENSE ------
  1. Happy Coding :)
Screenshot

Screenshot


Blocked by Microsoft Defender SmartScreen -> More Info -> Run Anyway

Screenshot

Screenshot

Screenshot


How to Crack Sublime Text 3 & 4 Alpha 4094 with Hex Editor (Linux & MacOS | With License) ↓

  1. Download & Install Sublime Text 3 or 4
  2. Visit https://hexed.it/
  3. Open file select sublime_text
    • Linux Location: /opt/sublime_text/sublime_text
    • MacOS Location: /Application/Sublime Text [version].app (Correct Me If I'm Wrong)
  4. Search 97 94 0D and Change to 00 00 00
  5. Export File and save it to location you want
  6. Backup sublime_text file (just rename)
  7. Copy sublime_text modified to default directory Sublime Text
  8. Use this License
----- BEGIN LICENSE ----- 
TwitterInc 
200 User License 
EA7E-890007 
1D77F72E 390CDD93 4DCBA022 FAF60790 
61AA12C0 A37081C5 D0316412 4584D136 
94D7F7D4 95BC8C1C 527DA828 560BB037 
D1EDDD8C AE7B379F 50C9D69D B35179EF 
2FE898C4 8E4277A8 555CE714 E1FB0E43 
D5D52613 C3D12E98 BC49967F 7652EED2 
9D2D2E61 67610860 6D338B72 5CF95C69 
E36B85CC 84991F19 7575D828 470A92AB 
------ END LICENSE ------
  1. Happy Coding :)
Screenshot

Screenshot


@naml3i
Copy link

naml3i commented Jun 10, 2021

is there any way to crack sublime merge? reply appreciated!!!

exact same way.

Awesome! However for Sublime Merge I found only the string to patch the RSA, what is the string to patch the host (I don't want to clutter the host file)?

Edit: Ah ok, my bad, I miscopied a little bit 😅 Thank you
Side note, for SM, after patching RSA and the host, you'll need Sublime Merge key to enter (a Sublime Text key won't work).
For example:
(basically you can replace SODiUm by anything)

-- BEGIN LICENSE --
SODiUM
Unlimited User License
E52D-75310125
C6C53B54 DE60AB25 89561B42 BDD4C267
61975DE1 A9B22C07 EE7248A0 7CEC65A2
BD5649D9 C0323400 6199CB35 8C4D3097
76D9E248 231738AC A640EA57 BEA37A4C
BD86520E 42B583AD 12B56E51 333AC12B
15445312 CDC61DEC C1DCA051 B8618754
380877A7 E6740A25 8AEB553E 9CA1E517
8612B3AE C84489D1 EABB8CC3 D2CA96EA
-- END LICENSE --

@7549brijesh
Copy link

is there any way to crack sublime merge? reply appreciated!!!

exact same way.

yes.... of course!!!! I have searched a lot but didn't find any perfect solution to crack the sublime merge

Copy link

ghost commented Jun 10, 2021

Youtube video: Creating a simple D (Dlang) program for patch your Sublime Text 4
Link: https://www.youtube.com/watch?v=MEsJxk3EVAQ
IMAGE ALT TEXT HERE

@duckimann
Copy link

is there any way to crack sublime merge? reply appreciated!!!

exact same way.

yes.... of course!!!! I have searched a lot but didn't find any perfect solution to crack the sublime merge

try mine:

Thanks @leogx9r :) I have my version on powershell here, tested on windows 10 x64, run as administrator (if sublime text/merge is installed)

@leogx9r
Copy link

leogx9r commented Jun 11, 2021

@duckimann Good effort! You should probably try to make it a bit more portable though since powershell is a pain to run on any other OS than Windows.

Here's my variant of an automatic update patcher I threw together after a couple hours in Python (with no crap pip-based dependencies!) so you can run this from any OS you want. Works for Windows, MacOS and Linux binaries as long as you have the patterns. Pretty fast given it's written in Python too and naturally it doesn't rely on fixed offsets/static patterns like 99% of the stuff I've seen here.

image
image
image

Yes, it also does Sublime Merge too:

image
image
image

:)

@bad1dea
Copy link

bad1dea commented Jun 11, 2021

nice

@duckimann
Copy link

duckimann commented Jun 11, 2021

@duckimann Good effort! You should probably try to make it a bit more portable though since powershell is a pain to run on any other OS than Windows.

@leogx9r Yeah i'll try next time ;) i usually write web stuff and some batch but this time i decided to write in something different so we have that PS file. but thanks :D you encouraged me to try something new :D

P/s: i couldn't find any solution about replacing bytes patterns with PS so the only way i can choose is fix address :(

@doomsday861
Copy link

Sublime Text 4 Build 4107 x64 Easy Tutorial
Youtube Video Link Tutorial Step by Step: https://www.youtube.com/watch?v=pr8GBwPsMHM
IMAGE ALT TEXT HERE
Only tested in Sublime Text Build 4107 x64
Add this follow lines in file "C:\Windows\System32\drivers\etc\hosts"

SublimeText

127.0.0.1 license.sublimehq.com # SublimeText
127.0.0.1 www.sublimetext.com # SublimeText
Download HxD from: https://mh-nexus.de/en/
Open "sublime_text.exe" in HxD, go to "Find/Replace" (Ctrl+R).
Go to tab "Hex-values" and:
Search for: 4157415656575553B828210000
Replace with: 33C0FEC0C3575553B828210000
Search for: 6C6963656E73652E7375626C696D6568712E636F6D
Replace with: 7375626C696D6568712E6C6F63616C686F73740000
Click to save (Ctrl+S).
Now, just register your Sublime Text with this code:
----- BEGIN LICENSE -----
You
Unlimited User License
EA7E-81044230
0C0CD4A8 CAA317D9 CCABD1AC 434C984C
7E4A0B13 77893C3E DD0A5BA1 B2EB721C
4BAAB4C4 9B96437D 14EB743E 7DB55D9C
7CA26EE2 67C3B4EC 29B2C65A 88D90C59
CB6CCBA5 7DE6177B C02C2826 8C9A21B0
6AB1A5B6 20B09EA2 01C979BD 29670B19
92DC6D90 6E365849 4AB84739 5B4C3EA1
048CC1D0 9748ED54 CAC9D585 90CAD815
------ END LICENSE ------

You don't need to do the host patch, if you're replacing the license check in the exe (the 2nd search/replace)

I've also whipped up a quick python script for it, if anyone wants, you'll obviously need python installed..
save as whatever_name_you_want.py (and put it in same folder as sublime_text.exe) and run it, or run it from command line.,.. python .py

with open("sublime_text.exe", "rb") as binaryFile:
    byteData = bytearray(binaryFile.read()) 

# create backup
with open("sublime_text.exe.bak", "wb") as binaryFile:
    binaryFile.write(byteData)

# search for rsa key function
byteData = byteData.replace(b'\x41\x57\x41\x56\x56\x57\x55\x53\xB8\x28\x21\x00\x00', b'\x33\xC0\xFE\xC0\xC3\x57\x55\x53\xB8\x28\x21\x00\x00')
# search for license host check
byteData = byteData.replace(b'\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x75\x62\x6C\x69\x6D\x65\x68\x71\x2E\x63\x6F\x6D', b'\x73\x75\x62\x6C\x69\x6D\x65\x68\x71\x2E\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74\x00\x00')

with open("sublime_text.exe", "wb") as binaryFile:
    binaryFile.write(byteData)

This works perfectly fine on Sublime Text4 build 4107, thank you!

@ryanrdk
Copy link

ryanrdk commented Jun 14, 2021

@anaf-siddi
Copy link

DEBIAN (LINUX DUH) AUTO-PATCH SCRIPT

MAKE SURE TO BLOCK SUBL DOMAINS VIA HOSTS BEFORE REGISTERING

Here's a quick and shitty script to patch the file on debian..
FOR USE WITH SUBLIME TEXT & DEBIAN DISTROS..
Feel free modify to make it work however...it's an overly engineered solution to make it easier for peepz

Raw PastBin you can curl/wget or w/e:
https://pastebin.com/raw/aPjNpevq

The Script:

######################################################
##Quick And Dirty Way To Register Sublime Text V3#####
##MEANT FOR USE WITH DEBIAN ONLY BECAUSE I'M SELFISH##
#########Horribly Scripted By Ohmybahgosh#############
######################################################
###Let's Begin...#####################################
######################################################

#!/bin/bash

##Make Sure We're Running This ONLY on a Debian Setup##
DEBIANCHECKER=/etc/debian_version
if test -f "$DEBIANCHECKER"; then
	echo "Cool...You're on a Debian Distro"
	sleep 3s
else
	echo "MEANT FOR DEBIAN ONLY.."
	echo "If You're Brave, Just Comment out this shitty checker.."
	read -n 1 -s -r -p "Press any key to exit"
	clear && exit 1
fi

##Ugly Ass Dependency Checker..
##Makes A Temporary Txt File With The List Of Required, Basic Ass Tools
##(sed Is The Tool We'll Use For Applying The Hex Patch)##
echo "sed" >> ./PACKAGES_NEEDED.txt
##(Zenity provides a simple GUI dialog for bash)##
echo "zenity" >> ./PACKAGES_NEEDED.txt
##(xClip is what will copy the registration key for your lazy ass)##
echo "xclip" >> ./PACKAGES_NEEDED.txt

##Clear Terminal of Junk & Begin Checking/Installing Basic Shit You Really Should of Had Already##
clear

##Loops thru the needed packages to see if they are installed via apt-mark showinstall##
for line in $(cat ./PACKAGES_NEEDED.txt); do
	PKG_CHECK=$(apt-mark showinstall $line | grep "^$line$")
	if [ -z "$PKG_CHECK" ]; then
		echo "Ruh Roh!  $line is NOT installed.."
		read -p "Reply 'Y' to  Install $line or 'N' to EXIT this script..." answer
		if [[ $answer =~ ^[Yy]$ ]]; then
				clear
			   	echo "Calling on APT to install $line"
	       		sudo apt-get install $line
		else
	       		clear
	       		echo $line "is NOT installed, but is Required For This Script"
	       		echo "Please either manually install $line"
	       		echo "or.."
	       		echo "Re-run this script and type Y when promted to install $line"
	       		echo "Exiting script while you get your shit together.."
	       		sleep 1 && echo "..."
	       		sleep 1 && echo ".."
	       		sleep 1 && echo "."
	       		sleep 1 && echo "BYYYYYEEEEEEEE"
				read -n 1 -s -r -p "Press any key to exit"
	       		clear
	       		exit 1
		fi
	fi
done

##Clear the terminal duh##
clear
echo "Required Packages are installed, moving on.."
sleep 3s

##Remove any trace of my shitty depdency check script##
##Just hit yes to confirm the deletion of it (the tmp txt file listing needed packages)##
clear
echo "Removing the temporary package check list txt file..just hit enter"
echo ""
rm -i ./PACKAGES_NEEDED.txt
clear

#Zentiy Info Dialog Explaining File Selection Step:##
zenity --question --icon-name="gtk-dialog-warning" --title="Hey...Read This Shiznit" --text="<b><big>After Clicking <i>Continue</i> a File Selection Dialog Will Appear</big></b>\n\n<b>YOU NEED TO SELECT THE SUBLIME BINARY CALLED\n\n<i>sublime_text</i></b>\n\n<b>It's Normally Located in <i>/opt/sublime_text/</i></b>" --no-wrap --width 300 --ok-label=Continue --cancel-label=Exit
if [ "$?" -eq 1 ]; then
echo "Exited The Script" && exit 1
fi

##Launch Binary File Selection Dialog via Zenity##
##Wrap it in a WHILE loop to make sure only sublime_text is selected##
while true; do
BINARY_FULL_PATH=$(zenity --file-selection --title="Select The sublime_text Binary" --text="Select the sublime_text binary file" --filename="/opt/sublime_text/")
SUBL_CHECK=$(echo "$BINARY_FULL_PATH" | sed 's@.*/@@')
	if [[ ! "$SUBL_CHECK" =~ sublime_text ]]; then
		zenity --question --no-wrap --width 300 --ok-label="Try Again" --cancel-label="Exit Script" --icon-name="messagebox_warning" --title="WRONG BINARY SELECTED" --text="<big><b>WRONG BINARY..\n\nYOU MUST SELECT THE BINARY FILE CALLED:\n\n<i>sublime_text</i></b></big>"
		if [ "$?" -eq 1 ]; then
			read -n 1 -s -r -p "Press any key to exit"
			clear && exit 1
		fi
	else
		break
	fi
done

#Confirm Selection##
zenity --question --text="You Selected:\n<big><i><b>${BINARY_FULL_PATH}</b></i></big>\n<big>\nPress <b>Yes</b> to Patch</big>" --no-wrap --icon-name="face-devilish" --width 300
if [ "$?" -eq 1 ]; then
echo "Exited The Patching Proccess" && exit 1
fi

#MAKE BINARY BACKUP##
cp $BINARY_FULL_PATH $BINARY_FULL_PATH.bak
zenity --info --title="Backup Created" --text="<b><big>\nBackup Created Here:\n<i>$BINARY_FULL_PATH.bak</i></big></b>" --width=375 --height=150 --no-wrap

##Hex Patch The Binary##
sed -i 's/\x97\x94\x0D/\x00\x00\x00/' $BINARY_FULL_PATH
zenity --info --title="Binary Has Been Patched" --text="<b><big>\nSublime Has Been Patched</big></b>" --width=375 --height=150 --no-wrap

##Copy Key To Clipboard##
echo "----- BEGIN LICENSE ----- 
TwitterInc 
200 User License 
EA7E-890007 
1D77F72E 390CDD93 4DCBA022 FAF60790 
61AA12C0 A37081C5 D0316412 4584D136 
94D7F7D4 95BC8C1C 527DA828 560BB037 
D1EDDD8C AE7B379F 50C9D69D B35179EF 
2FE898C4 8E4277A8 555CE714 E1FB0E43 
D5D52613 C3D12E98 BC49967F 7652EED2 
9D2D2E61 67610860 6D338B72 5CF95C69 
E36B85CC 84991F19 7575D828 470A92AB 
------ END LICENSE ------" | xclip -selection c

##Show Registration Key To Use##
clear
touch ./KEY_4_REGISTRATION.txt
truncate -s0 ./KEY_4_REGISTRATION.txt
echo "----- BEGIN LICENSE ----- 
TwitterInc 
200 User License 
EA7E-890007 
1D77F72E 390CDD93 4DCBA022 FAF60790 
61AA12C0 A37081C5 D0316412 4584D136 
94D7F7D4 95BC8C1C 527DA828 560BB037 
D1EDDD8C AE7B379F 50C9D69D B35179EF 
2FE898C4 8E4277A8 555CE714 E1FB0E43 
D5D52613 C3D12E98 BC49967F 7652EED2 
9D2D2E61 67610860 6D338B72 5CF95C69 
E36B85CC 84991F19 7575D828 470A92AB 
------ END LICENSE ------" >> ./KEY_4_REGISTRATION.txt

##Launch Another Zenity Dialog Showing The Key For Manual Copy And Paste..even Though Copied To Clipboard Already##
zenity --text-info --filename=./KEY_4_REGISTRATION.txt --width=500 --height=475 --title="Use This To Register With" --text="Copy This Registration Key and Paste it in to Sublime to Register" --no-wrap

##Launch Sublime and Exit this shit##
subl &
clear
exit 0

hmm im getting error on line 34 running on pop os btw

@anaf-siddi
Copy link

anaf-siddi commented Jun 16, 2021

@duckimann Good effort! You should probably try to make it a bit more portable though since powershell is a pain to run on any other OS than Windows.

Here's my variant of an automatic update patcher I threw together after a couple hours in Python (with no crap pip-based dependencies!) so you can run this from any OS you want. Works for Windows, MacOS and Linux binaries as long as you have the patterns. Pretty fast given it's written in Python too and naturally it doesn't rely on fixed offsets/static patterns like 99% of the stuff I've seen here.

image
image
image

Yes, it also does Sublime Merge too:

image
image
image

:)

do you have a link for the patcher pls?? @leogxnr

@leogx9r
Copy link

leogx9r commented Jun 23, 2021

@anaf-siddi I'll be keeping that to myself for now. Also please stop quoting entire messages, it makes this thread extremely long and disorganised.


Sublime Text v4109 Crack

Dev build was released here which contains the following changes from v4107:

v4109
    Various syntax highlighting improvements
    Syntax and indentation detection is now done when editing stdin
    Fixed Ruby syntax highlighting in the Monokai color scheme
    Fix Sublime Text opening stdin on Windows and Linux when not desired
    Windows: Fixed always opening files in new windows

v4108
    Improved performance when editing large files
    Improved OpenGL rendering performance
    Improved handling of deleted files
    subl can now be used to edit stdin, eg: echo test | subl | cat
    Theme: Improved scroll puck visibility
    Theme: Fixed adaptive theme not respecting themed_title_bar setting with light color schemes
    Added reveal_menu setting for disabling revealing the menu when alt is pressed on Linux and Windows
    Fixed the append command's scroll_to_end parameter sometimes not working
    Safe Mode key binding can be disabled by creating a file named .Disable Safe Mode Shortcut in the data directory
    Fixed Goto Symbol sometimes being scrolled incorrectly
    Fixed multi-select file limit applying to sidebar
    Fixed auto-complete related hang in some large files
    Linux: Fixed print sometimes not working
    Linux: Fixed wrong order of yes/no buttons in GTK dialogs
    Windows: Always make a new window when launching main executable on Windows
    Windows: Fixed window icon not scaling properly on Windows
    Windows: Fixed globs not being expanded in some cases on Windows
    Mac: Fixed auto theme not changing with OS auto theme on macOS

Cracking procedure is the same as my above methods however, the patterns have changed for Windows x64 (Portable) for the Invalidation/Validation Threads, everything else is the same, aka MacOS/Linux builds have the same patterns as before and the methods required for patching remain unchanged.

Invalidation/Validation Threads

    Windows x64 Pattern 1: `direct reference sig: (+0x6) 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 96 ? ? ? ?`
                Pattern 2: `direct reference sig: (+0x6) 41 B8 ? ? ? ? E8 ? ? ? ? E8 ? ? ? ? 48 89 F1 `

Adjust the patterns in your script to account for that difference and you'll be golden.

image

I've uploaded a patched Windows x64 executable here. The virus scan is located here. As always, if you don't trust it, patch it yourself.

Proof

image
image
image
image

Enjoy.

@duckimann
Copy link

@anaf-siddi I'll be keeping that to myself for now. Also please stop quoting entire messages, it makes this thread extremely long and disorganised.

i believe there are some dum-dum knows how to quote but don't know how to tidy the quote up. Btw, what is "RVA" in this image stand for? Thanks.

image

@maboloshi
Copy link

@leogx9r good job, I updated crack to 4109 according to your tutorial.
https://gist.github.com/maboloshi/feaa63c35f4c2baab24c9aaf9b3f4e47

@sdilshod
Copy link

SOLVE version 4107 final
You must add the following lines in your host file

0.0.0.0 sublimetext.com
0.0.0.0 license.sublimehq.com
0.0.0.0 45.55.255.55 #sublimetext
0.0.0.0 45.55.41.223 #sublimetext

Then enter the license

—– BEGIN LICENSE —–
Die Socialisten GmbH
10 User License
EA7E-800613
51311422 E45F49ED 3F0ADE0C E5B8A508
2F4D9B65 64E1E244 EDA11F0E F9D06110
B7B2E826 E6FDAA72 2C653693 5D80582F
09DCFFB5 113A940C 5045C0CD 5F8332F8
34356CC6 D96F6FDB 4DEC20EA 0A24D83A
2C82C329 E3290B29 A16109A7 EC198EB9
F28EBB17 9C07403F D44BA75A C23C6874
EBF11238 5546C3DD 737DC616 445C2941
—— END LICENSE ——

Thanks! this is worked for me

@leogx9r
Copy link

leogx9r commented Jun 24, 2021

Btw, what is "RVA" in this image stand for?

@duckimann RVA translates to relative virtual address. This is how an E8 XX XX XX XX instruction encodes to as you can see here. The following 4 bytes after E8 contains a 32-bit relative displacement "pointer" to the target address based on the current RIP (instruction pointer) register value. The same applies to near jumps like jmp, je, jne, ja, jb etc. The screenshot shows the pattern_located_offset -> rva_value_at_offset -> calculated_absolute_offset.

@leogx9r good job, I updated crack to 4109 according to your tutorial.

@maboloshi Nice work. I'll probably post updates there too from now on provided I remember.

Copy link

ghost commented Jun 29, 2021

Hi @bad1dea + @leogx9r,
i am on Linux x86_64 & using sublime text 4107
but i am facing a problem in finding the rsa key!
I tried this two:

Search for x64...
4157415656575553B828210000
Replace with ...
33C0FEC0C3575553B828210000

rsa patch 4107 - x86
Search for: 55535756B8AC200000
Replace with: 33C0FEC0C3AC200000

but didn't work!
i am attaching my sublime_text from /opt/sublime_text/sublime_text here:
https://www.upload.ee/files/13273345/sublime_text.html
please tell me how to find the rsa key

@pawel-dabek
Copy link

Do you have any method to crack M1 ARM version of ST4?

@Taiga74164
Copy link

This works for most of the Sublime Text 4.X x64 (Including 4107) - block the license check via host or patch it out of EXE

RSA Key Patch (allows any key in right format to work)

Search for ...
4157415656575553B828210000
Replace with ...
33C0FEC0C3575553B828210000

Disable License Check (You can do this via hosts file if you rather)

Search for...
6C6963656E73652E7375626C696D6568712E636F6D
Replace with ...
7375626C696D6568712E6C6F63616C686F73740000

You can now use any license basically that follows the same syntax/format/key.

-- BEGIN LICENSE --
Generic Name
Unlimited User License
EA7E-81044230
0C0CD4A8 CAA317D9 CCABD1AC 434C984C
7E4A0B13 77893C3E DD0A5BA1 B2EB721C
4BAAB4C4 9B96437D 14EB743E 7DB55D9C
7CA26EE2 67C3B4EC 29B2C65A 88D90C59
CB6CCBA5 7DE6177B C02C2826 8C9A21B0
6AB1A5B6 20B09EA2 01C979BD 29670B19
92DC6D90 6E365849 4AB84739 5B4C3EA1
048CC1D0 9748ED54 CAC9D585 90CAD815
-- END LICENSE --```

worked just fine. Thanks!
image

@secretiveolwagner
Copy link

@ryanrdk When I ran the patch I got the following error:
Error loading colour scheme Mariana.sublime-color-scheme: Unable to find Mariana.sublime-color-scheme
Error loading syntax file "Packages/Text/Plain text.tmLanguage": Unable to open Packages/Text/Plain text.tmLanguage
I'm also running Big Sur 11.4, how did you patch it? Thanks.

@rahitashpaul
Copy link

Here's my method for breaking their license protection. I've specifically applied the below to v4107.

Quick note: This isn't meant for newbies, this shows you how to patch the current and (most likely) future versions of Sublime Text. I've been using this for a while now.

Here's a basic rundown of how license validation and invalidation works:

  • Licenses have hardcoded (lol, remove blacklist and patch server thread, 10/10 protection) blacklists in the executable and are signed via an RSA public key (which is 'encrypted' in the binary, basically some xor stuff).
  • Application tries to validate an invalid license every 5 seconds. It expects this to fail but if it succeeds, it will unregister you after 480 seconds. This is why simply patching the validity function isn't enough.
  • Application tries to validate your current license every 15 seconds. It expects this to succeed but if it fails, it will unregister you after 360 seconds.
  • The application creates a thread to validate the current license with the server at license.sublimehq.com whenever the application is started (config file read) or when modifying your current license. If this succeeds to connect and your license isn't correct it will unregister you.

So how can you bypass all this? Dare I say, efficiently?

  • Patch the validation function (isLicenseValid as I call it) for anything to always return 0 (valid). Values from 1-4 specify either an invalid, blacklisted or unsupported/expired license.
  • Prevent thread creation for the validation/invalidation routines to avoid the license being unregistered after X seconds due to patching isLicenseValid. Optionally simply remove the "unregister" function here. Doesn't matter how you go about it really.
  • Disable server validation thread or patch the HTTP host so it always fails to connect. Most people resort to using hosts to redirect the license server to localhost or renaming the host in the binary. A far better way is simply to avoid a dead thread being created that does this check.

Disabling creation of these 3 threads is my preferred method since you obviously save resources as you don't need to constantly have new threads opened every X seconds.

Why I consider this better than other methods?

  • No need to find a "working"/"nonblacklisted" license. You can literally enter "Hello World!" as a valid license.
  • No useless thread creation eating up resources. A small performance improvement you'll absolutely never notice.
  • You don't have to patch /etc/hosts or system32/drivers/etc/hosts.
  • Relies on patterns so you can build your own script to auto-patch on updates, provided patterns don't break of course.
  • Doesn't decide to randomly expire.

How tho?

Patch the following methods:

  • License Validity Checking (Aka IsValidLicense

Make isLicenseValid return 0, pattern is a reference to call isLicenseValid. I personally just replaced the method with xor rax, rax; ret so 48 31 C0 C3.

    Linux/MacOS x64 Pattern: `direct reference sig: E8 ? ? ? ? 49 8B BF ? ? ? ? 85 C0`
    Windows x64 Pattern:     `direct reference sig: E8 ? ? ? ? 48 8B 8B ? ? ? ? 85 C0`
  • Invalidation/Validation Functions

These cause delayed unregistration after 360/480 seconds so NOP out the calls to avoid them. Aka replace E8 XX XX XX XX with 90 90 90 90 90.

    Windows x64 Pattern 1: `direct reference sig: (+0x6) 41 B8 ? ? ? ? E8 ? ? ? ? 49 8B 96`
                Pattern 2: `raw sig: E8 ? ? ? ? E8 ? ? ? ? 4C 89 F1 E8`
    Linux x64   Pattern 1: `raw sig: E8 ? ? ? ? 48 89 5C 24 ? 48 8B B3`
                Pattern 2: `raw sig: E8 ? ? ? ? BF ? ? ? ? E8 ? ? ? ? 83 25`
    MacOS       Pattern 1: `raw sig: E8 ? ? ? ? 48 89 9D ? ? ? ? 48 8B B3`
                Pattern 2: `raw sig: E8 ? ? ? ? 48 8D 3D ? ? ? ? E8 ? ? ? ? 83 25`
  • Server Validation Thread

Simply make this instantly return 1 to disable thread creation or patch the hostname to something invalid. I personally prefer to simply disable thread creation by making this return 1, aka 48 31 C0 48 FF C0 C3, xor rax, rax; inc rax; ret.

    Windows x64 Pattern: `raw sig: 55 56 57 48 83 EC 30 48 8D 6C 24 ? 48 C7 45 ? ? ? ? ? 89 D6 48 89 CF 6A 28`
    Linux x64   Pattern: `raw sig: 55 41 56 53 41 89 F6 48 89 FD 6A 28`
    MacOS       Pattern: `raw sig: 55 48 89 E5 41 57 41 56 53 50 41 89 F6 49 89 FF 6A 20`

Now what?

After patching simply register with anything you want. It can even be just a random letter, a space, a word, a sentence, a valid or invalid license -- whatever you want. Here's what I registered with:

Paying 80$ For A License Is Stupid

But I wanna download!

Linux

For Linux x64 on v4107, you can use this (replace /opt/sublime_text/sublime_text with the path to the binary):

# 554157415641554154534881EC68240000 -> 4831C0C390909090909090909090909090
sed -i 's/\x55\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xEC\x68\x24\x00\x00/\x48\x31\xC0\xC3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90/g' /opt/sublime_text/sublime_text

# E8C2781800 -> 9090909090
sed -i 's/\xE8\xC2\x78\x18\x00/\x90\x90\x90\x90\x90/g' /opt/sublime_text/sublime_text
# E8A7781800 -> 9090909090
sed -i 's/\xE8\xA7\x78\x18\x00/\x90\x90\x90\x90\x90/g' /opt/sublime_text/sublime_text

# 554156534189F64889FD6A28 -> 4831C048FFC0C39090909090
sed -i 's/\x55\x41\x56\x53\x41\x89\xF6\x48\x89\xFD\x6A\x28/\x48\x31\xC0\x48\xFF\xC0\xC3\x90\x90\x90\x90\x90/g' /opt/sublime_text/sublime_text

Windows

I've uploaded a portable copy of the Windows x64 bit version, already patched, here. Simply replace the sublime_text.exe file from the portable download with the above. Here's the virus scan. Note: PE.Heur.InvalidSig is due to patching the executable to bypass the license checks. Don't trust it? Then patch it yourself :P

I've been using this on both Windows and Linux since the new version dropped without issues.

MacOS

No.

Proof

image
image
image

Dear sir, which software you use for this let me know...

@update-freak
Copy link

update-freak commented Jul 14, 2021

@leogx9r: Can you please share the patched exe of Sublime Text 4 Version 4113?

@K4VINSKY
Copy link

For 4113 and maybe previous versions:

I don't know if you need to modify your host file but i did it a long time ago, so if you need:

  • 0.0.0.0 sublimetext.com
    0.0.0.0 license.sublimehq.com
    0.0.0.0 45.55.255.55 #sublimetext
    0.0.0.0 45.55.41.223 #sublimetext
  1. Go to hexed.it
  2. Click "Open File" and choose your sublime_text.exe (DON'T FORGET TO BACKUP YOUR EXE FILE)
  3. Go to Search and in "Search for" put: C3 C6 01 00 C3
  4. In Search Type select "Enable replace" and put: C3 C6 01 01 C3
  5. Click "Find next" then "Replace"
  6. Do the same thing with: 51 31 C0 88 05 => 51 b0 01 88 05
  7. Click "Save as" then name it: sublime_text
  8. Copy your modified sublime_text.exe to directory Sublime Text

If you're too lazy, you can use my modified sublime_text.exe

image
Enjoy :)

@Bruskyer
Copy link

@K4VINSKY Thank you it works perfect 👌

@leogx9r
Copy link

leogx9r commented Jul 14, 2021

If you're using something other than Windows, check here for Linux/MacOS versions.

@Hazuki-san
Copy link

Hazuki-san commented Jul 15, 2021

@godrider
Copy link

I used @leogx9r method to patch b4113, it works!
https://raw.githubusercontent.com/Hazuki-san/ST-collections/main/Build%204113/sublime_text.exe

Many thanks! This worked for me.

Bc4CLYC

@RifatMahmudno-1
Copy link

@jowinjohnchemban
Copy link

jowinjohnchemban commented Jul 22, 2021

For 4113 and maybe previous versions:

I don't know if you need to modify your host file but i did it a long time ago, so if you need:

  • 0.0.0.0 sublimetext.com
    0.0.0.0 license.sublimehq.com
    0.0.0.0 45.55.255.55 #sublimetext
    0.0.0.0 45.55.41.223 #sublimetext
  1. Go to hexed.it
  2. Click "Open File" and choose your sublime_text.exe (DON'T FORGET TO BACKUP YOUR EXE FILE)
  3. Go to Search and in "Search for" put: C3 C6 01 00 C3
  4. In Search Type select "Enable replace" and put: C3 C6 01 01 C3
  5. Click "Find next" then "Replace"
  6. Do the same thing with: 51 31 C0 88 05 => 51 b0 01 88 05
  7. Click "Save as" then name it: sublime_text
  8. Copy your modified sublime_text.exe to directory Sublime Text

If you're too lazy, you can use my modified sublime_text.exe

image
Enjoy :)

Another way to do the same 👍

Use "Go to" option in hexed.it
Change it,

000000aa40 - 00 > 01

00000a6906 - 31 > b0
00000a6907 - C0 > 01

@ShaGrAt-LsD
Copy link

Sublime Text 4 Build 4113 & Sublime Merge 2 Build 2059
Windows X64 - Standard and portable

https://pastebin.com/2g2MZr6N

Enjoy ;)

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