Skip to content

Instantly share code, notes, and snippets.

@rufoa
Last active December 11, 2024 04:20
Show Gist options
  • Save rufoa/78e45d70f560f53678853c92dae2598a to your computer and use it in GitHub Desktop.
Save rufoa/78e45d70f560f53678853c92dae2598a to your computer and use it in GitHub Desktop.
sublime merge 2 build 2068 linux
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
target="${1:-/opt/sublime_merge/sublime_merge}"
check_sha() {
local sha_valid
sha_valid=("$@")
local hash
hash="$(sha256sum "$target" | cut -d' ' -f1)"
for s in "${sha_valid[@]}"; do
if [ "$hash" = "$s" ]; then
return 0
fi
done
return 1
}
patch_offset() {
printf "$3" | dd of="$target" bs=1 seek=$(($1)) count="$2" conv=notrunc status=none
}
if [ ! -w "$target" ]; then
echo "$target does not exist or is not writable. Ensure the path is correct and that you have write permission." >&2
exit 1
fi
if check_sha "17cfde363bbb4ed7ad412b29db51d6433571a1397ea5215738233117a0875b3f" "f271c550f5bd3307880db30bf85d9c6ccd08c3b739e9307c907b01e16b6a9ec8"; then
echo "Checksum matches" >&2
else
echo "Checksum does not match. Ensure $target is the correct, unmodified version of Sublime Merge." >&2
exit 1
fi
backup="$target.bak"
cp "$target" "$backup"
revert() {
err=$?
trap - TERM INT EXIT
mv "$backup" "$target"
echo "Reverted modifications to $target" >&2
exit $err
}
trap revert TERM INT EXIT
echo "Patching $target" >&2
# Swap public key
patch_offset 0x59BC0 160 '\x30\x81\x9d\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x81\x8b\x00\x30\x81\x87\x02\x81\x81\x00\xc9\xda\x03\xe0\xc6\x33\xce\x4e\x55\xf5\xbf\x60\xf9\xb1\xb0\xda\xd6\x64\xc0\x5d\x03\xca\x7e\x21\xa6\x57\xd2\x17\xa9\x58\x9d\x51\x73\x30\x0d\xb5\x34\x13\x08\xab\x55\x5c\x22\x26\x6c\x03\x0d\xbe\x3c\x80\xb4\x59\xe9\xee\xad\x45\x8f\xa1\x38\x37\x69\xcd\x51\xa2\x19\xa4\x41\x4b\x8c\x0a\x1e\x51\x7f\x58\xc8\x33\xa5\x3c\x15\xc8\x24\xcd\xcc\x94\xb8\x5a\xfe\x44\x12\xa0\x18\x34\x63\x87\x72\x11\x11\x0b\x0c\x12\x44\x76\xec\x60\x13\xc0\x0d\x7e\xf1\x48\xbf\x8a\xce\x10\x02\x79\x45\x31\xf5\x3a\x34\xf2\x56\x6e\x71\xc7\xf4\x45\x02\x01\x11'
# Swap xor key
patch_offset 0x3C6A72 1 '\x00'
# Fix sha-2 check
patch_offset 0x3C72ED 4 '\x44\x89\xf5\x90'
# Disable online licence check
patch_offset 0x3C7E85 1 '\xc3'
# Disable phone home
patch_offset 0x3C6788 1 '\xc3'
if check_sha "dca8a5dbf858d7c27412cde351ba26ca41e02f70d97acd0b76c8dbe695184fc8" "e4664019965cae0391a7e4382bb1e27aba6424a173c4d3ac09aa091ccb349ee7"; then
echo "Patch applied successfully" >&2
else
echo "Patch appears unsuccessful" >&2
exit 1
fi
trap - TERM INT EXIT
----- BEGIN LICENSE -----
TEAM RUFIO
Unlimited User License
E52D-666666
487EE6F0309908F702DDD52AFCD99A6A
6EE14CF8A2D42271B4FC0991BBF93ADC
FAA9075C436B3796669194A2F36CAAEF
B251155329EC2E434FD28B4A21BE68CC
955D306EE9ED843C5E98B1577D02DEAA
1F4E872AE6495CD5E3B1DA55D5ACD2B2
2EA4110FB800F21AA3EC2E3902589BCF
7281A19C2DFF0CEE4AEA5DDD1E6DF893
----- END LICENSE -----
@tukusejssirs
Copy link

You should be able to swap the Fedora binary with the one coming directly from Sublime guys

@Stygmatik, I doubt that, as I installed it from the offical SM repo.

I guess Fedora mainteners did mess with the binary (they strip it maybe).

It would strange, as until now all @rufoa’s patches worked as expected and he shared same checksums as files installed on my system.

What OS do you use for testing?

I found this other gist

Thanks for sharing. 😉 I’ll try that out too.

@Stygmatik
Copy link

Yes you can swap the binary.

I'm using ArchLinux. And when I'm using AUR to install this sublime merge build, I also got a different checksum than the one coming from https://download.sublimetext.com/sublime_merge_build_2063_x64.tar.xz

But at least, in my case I know why. The PKGBUILD is stripping the downloaded binary before moving it to /opt/.

That's why I said it may be the same with dnf packages.

As you can see in @rufoa patch, it checks for different hashes for the same file.

I only took the hash of the "pure" binary, not the ones coming from AUR, dnf, or apt.

You could try to add your "original" hash to the script. Or take the "pure" binary.

Regards

@rufoa
Copy link
Author

rufoa commented Nov 8, 2021

I'll update this soon, I've been a bit busy

Thanks for the info @Stygmatik, I will investigate your simpler method for the sha-2 check

The official rpm version differs from the other official linux versions for some reason. Both are stripped. But the very end of the file is different (and a couple of bytes in the elf header). Luckily the patches still apply at the same offsets for both

@kimocoder
Copy link

@Voldemaar84
Copy link

Any update for 2068?

@rufoa
Copy link
Author

rufoa commented Dec 28, 2021

Updated for build 2068

@alexdrm98
Copy link

alexdrm98 commented Apr 8, 2022

not working for build 2068 from AUR.
Checksum does not match. Ensure /opt/sublime_merge/sublime_merge is the correct, unmodified version of Sublime Merge.
>> sha256sum /opt/sublime_merge/sublime_merge
16a5c27826c7b53d29c29de34c7d4f4301ad10fe06cf33397857077ad8618f94 /opt/sublime_merge/sublime_merge

@rufoa
Copy link
Author

rufoa commented Apr 8, 2022

@alexdrm98 download the tar.xz from the SM website and use the unmodified sublime_merge binary inside as the input to this patcher

@alexdrm98
Copy link

@alexdrm98 download the tar.xz from the SM website and use the unmodified sublime_merge binary inside as the input to this patcher

Thanks man! it worked :)
btw, i've sublime 4131 build. it shows "license upgrade required". Does that mean if i upgrade i have to patch/buy license?

@alexdrm98
Copy link

@alexdrm98 download the tar.xz from the SM website and use the unmodified sublime_merge binary inside as the input to this patcher

Thanks man! it worked :)
btw, i've sublime 4131 build. it shows "license upgrade required". Does that mean if i upgrade i have to patch/buy license?

@rufoa
Copy link
Author

rufoa commented Apr 8, 2022

@alexdrm98 yes, I believe that means your 3 year licence has expired, so to use versions newer than (your licence purchase date + 3 years) you'll need a new licence or patch

@ask6483
Copy link

ask6483 commented Apr 25, 2022

There is new build 2071, any chances to make the patch work?

@zheltikov
Copy link

Any update for the latest 2071 build?

@rufoa
Copy link
Author

rufoa commented Apr 25, 2022

Yes I'm aware of the new version and hope to update the patch soon

@rafaelribeiroo
Copy link

Yes I'm aware of the new version and hope to update the patch soon

Any update?

@kimhongsu
Copy link

Any update?

@ask6483
Copy link

ask6483 commented Jun 15, 2022

Thx @theol0403 works great on linux!

@expatjedi
Copy link

Don't try the patch on AUR package, it does not work.

Simply download the file https://download.sublimetext.com/sublime_merge_build_2068_x64.tar.xz

extract and move the folder into /opt that's all.

@pyGuru123
Copy link

The above license key works, but for that you will have to patch sublime merge : https://pygurutricks.blogspot.com/2023/07/get-sublime-merge-free-license-key.html

@zunjack
Copy link

zunjack commented Jan 27, 2024

@rufoa my dude have you found the correct patches for any newer versions of Text and Merge?

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