Skip to content

Instantly share code, notes, and snippets.

@souhaiebtar
Forked from rufoa/patch.sh
Created May 2, 2022 03:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save souhaiebtar/b8f1fc5bee9d51b77e71515f4b1a0c35 to your computer and use it in GitHub Desktop.
Save souhaiebtar/b8f1fc5bee9d51b77e71515f4b1a0c35 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 -----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment