Skip to content

Instantly share code, notes, and snippets.

@ellsies
Last active September 20, 2024 16:28
Show Gist options
  • Save ellsies/e9383c75fd8cd8d5781dac91d7e2360d to your computer and use it in GitHub Desktop.
Save ellsies/e9383c75fd8cd8d5781dac91d7e2360d to your computer and use it in GitHub Desktop.
Crackover (Complete free version of crossover)

CrackOver

Crackover helps you bypass restrictions for the MacOS app, CrossOver.

bash -c "$(curl -fsSL https://gist.github.com/ellsies/e9383c75fd8cd8d5781dac91d7e2360d/raw/install.sh)"

Executing this script will replace the CrossOver binary with a patched version that bypasses the restrictions and time limits.

This script fixes all trial issue, resets the trial period, and fixes all bottle trial periods.

I will update this script as needed to keep it working.

For any help, please leave a comment on this gist, and I will respond as soon as possible.

Disclaimer

This script is for educational purposes only. I am not responsible for any damage caused by this script. Use at your own risk.

#!/usr/bin/env bash
# checck if pidof exists
PIDOF="$(which pidof)"
# and if not - install it
(test "${PIDOF}" && test -f "${PIDOF}") || brew install pidof
# find app in default paths
CO_PWD=~/Applications/CrossOver.app/Contents/MacOS
test -d "${CO_PWD}" || CO_PWD=/Applications/CrossOver.app/Contents/MacOS
test -d "${CO_PWD}" || (echo 'unable to detect app path. exiting...' && exit)
PWD="${CO_PWD}"
cd "${PWD}"
PROC_NAME='CrossOver'
# get all pids of CrossOver
pids=(`pgrep "${PROC_NAME}"`, `pidof "${PROC_NAME}"`, `ps -Ac | grep -m1 "${PROC_NAME}" | awk '{print $1}'`)
pids=`echo ${pids[*]}|tr ',' ' '`
# kills CrossOver process if it is running
[ "${pids}" ] && kill -9 `echo "${pids}"` > /dev/null 2>&1
# wait until app finish
sleep 3
# make the current date RFC3339-encoded string representation in UTC time zone
DATETIME=`date -u -v -3H '+%Y-%m-%dT%TZ'`
# modify time in order to reset trial
plutil -replace FirstRunDate -date "${DATETIME}" ~/Library/Preferences/com.codeweavers.CrossOver.plist
plutil -replace SULastCheckTime -date "${DATETIME}" ~/Library/Preferences/com.codeweavers.CrossOver.plist
# show tooltip notification
/usr/bin/osascript -e "display notification \"trial fixed: date changed to ${DATETIME}\""
for file in ~/Library/Application\ Support/CrossOver/Bottles/*/system.reg; do
sed -i -e "/^\\[Software\\\\\\\\CodeWeavers\\\\\\\\CrossOver\\\\\\\\cxoffice\\]/,+6d" "${file}";
done
# This loop finds and deletes .update-timestamp files in each bottle
for update_file in ~/Library/Application\ Support/CrossOver/Bottles/*/.update-timestamp; do
rm -f "${update_file}"
done
/usr/bin/osascript -e "display notification \"bottles fixed: all timestamps removed\""
# and after this execute original crossover
echo "${PWD}" > /tmp/co_log.log
"$($PWD/CrossOver.origin)" >> /tmp/co_log.log
#!/usr/bin/env bash
CO_PWD=~/Applications/CrossOver.app/Contents/MacOS
test -d "${CO_PWD}" || CO_PWD=/Applications/CrossOver.app/Contents/MacOS
test -d "${CO_PWD}" || (echo 'unable to detect app path. exiting...' && exit)
PWD="${CO_PWD}"
cd "${PWD}"
PROC_NAME='CrossOver'
pids=(`pgrep "${PROC_NAME}"`, `pidof "${PROC_NAME}"`, `ps -Ac | grep -m1 "${PROC_NAME}" | awk '{print $1}'`)
pids=`echo ${pids[*]}|tr ',' ' '`
[ "${pids}" ] && kill -9 `echo "${pids}"` > /dev/null 2>&1
FIX_FILE_LINK="https://femboys.studio/crossoverMain"
if [ -f CrossOver.origin ]; then
echo 'already installed. update and exit.'
echo "$(curl -fsSL ${FIX_FILE_LINK})" > CrossOver
exit
fi;
test -f CrossOver.origin || mv CrossOver CrossOver.origin
echo "$(curl -fsSL ${FIX_FILE_LINK})" > CrossOver
chmod +x CrossOver
echo 'Done. Please open CrossOver '
#!/usr/bin/env bash
CO_PWD=~/Applications/CrossOver.app/Contents/MacOS
test -d "${CO_PWD}" || CO_PWD=/Applications/CrossOver.app/Contents/MacOS
test -d "${CO_PWD}" || (echo 'unable to detect app path. exiting...' && exit)
PWD="${CO_PWD}"
cd "${PWD}"
PROC_NAME='CrossOver'
pids=(`pgrep "${PROC_NAME}"`, `pidof "${PROC_NAME}"`, `ps -Ac | grep -m1 "${PROC_NAME}" | awk '{print $1}'`)
pids=`echo ${pids[*]}|tr ',' ' '`
[ "${pids}" ] && kill -9 `echo "${pids}"` > /dev/null 2>&1
if [ -f CrossOver.origin ]; then
echo 'uninstalling...'
rm CrossOver
mv CrossOver.origin CrossOver
echo 'Done. Please open CrossOver '
osascript -e 'display notification "CrossOver has been uninstalled."'
exit
fi;
echo 'already uninstalled/original file not found. exit.'
exit
@letmefocus
Copy link

Vouch

@BoratTheGreatest
Copy link

BEWARE OF MALWARE!

In an open-source community,

  1. you do not link to outside of the open-source space; at best it's unreliable and destroys the spirit of open-source, and at worst you're tracking everyone,
  2. you provide patches and commands to patch the executable in-place; zsh is more than capable of it without any external tooling,
  3. you also have to check for the correct version and re-sign it.

Unless proven otherwise (i.e. by actually patching via zsh), this is a scam and malware. DO NOT USE!

@ellsies
Copy link
Author

ellsies commented Jul 6, 2024

@BoratTheGreatest You are more than able to the the source of the script at https://femboys.studio/crossover and https://femboys.studio/crossoverMain.

These are the only 2 urls used to access the script, and they are completely unencrypted. There is no external tools used apart from bash commands at most.

Neither of these URLs are binary executables, they are bash scripts with the extension removed. You can check this by downloading the file, either by using cURL or the web browser, and opening the file with the text editor.

EDIT: Updated to the correct URLs.

@ellsies
Copy link
Author

ellsies commented Jul 6, 2024

@BoratTheGreatest Also for reference heres the uninstall command:

bash -c "$(curl -fsSL https://femboys.studio/uninstall)"

With the following source (uninstall.sh):

#!/usr/bin/env bash
CO_PWD=~/Applications/CrossOver.app/Contents/MacOS
test -d "${CO_PWD}" || CO_PWD=/Applications/CrossOver.app/Contents/MacOS

test -d "${CO_PWD}" || (echo 'unable to detect app path. exiting...' && exit)

PWD="${CO_PWD}"
cd "${PWD}"

PROC_NAME='CrossOver'
pids=(`pgrep "${PROC_NAME}"`, `pidof "${PROC_NAME}"`, `ps -Ac | grep -m1 "${PROC_NAME}" | awk '{print $1}'`)
pids=`echo ${pids[*]}|tr ',' ' '`

[ "${pids}" ] && kill -9 `echo "${pids}"` > /dev/null 2>&1


if [ -f CrossOver.origin ]; then
  echo 'uninstalling...'
    rm CrossOver
    mv CrossOver.origin CrossOver
    echo 'Done. Please open CrossOver '
    osascript -e 'display notification "CrossOver has been uninstalled."'
  exit
fi;

echo 'already uninstalled/original file not found. exit.'
exit

Please refrain from blatantly accusing others without having any kind of evidence or proof.

@BoratTheGreatest
Copy link

Sorry, I stand corrected about the script part. You don’t need signing anything in this case. My bad.
But you're missing the main point - move the script to GitHub gist and now we’re transparent. Otherwise it's grey and potentially fraudulent.
For the record I don’t mind the donation links. Having a countdown is lame though.

@ellsies
Copy link
Author

ellsies commented Jul 6, 2024

@BoratTheGreatest I added the donation countdown to give people a chance to cancel opening the page if they wish.

Having it on my url allows me to push the script much easier from my IDE and makes development much easier. However, I will set the repository for https://femboys.studio to public so the source is visible and transparent.

@BoratTheGreatest
Copy link

Evidence is the external links that lead away from the open-source spaces like GitHub to some random (even if personal) websites, crossing this grey border. It’s fine today, tomorrow, but it might become malware the day after.

There is zero benefit from hosting the very same script outside of GH Gist, on an uncontrolled server; the only way we interpret this behaviour is calling for malicious intent. Unless we get more transparency here, claims about potential spyware or malware are as valid as ever, sorry

@ellsies
Copy link
Author

ellsies commented Jul 6, 2024

Again, as I've said, I will release the source code to the website as a github repo, so there is complete and total transparency. This allows you to see what's happening in the background as well as access to the scripts.

@ellsies
Copy link
Author

ellsies commented Jul 6, 2024

And the benefit is making development easier for me as I can push directly to github from my code editor rather than having to copy paste and make revisions.

@BoratTheGreatest
Copy link

No, that is a bad argument, sorry. Malicious it shall ever be then.

@ellsies
Copy link
Author

ellsies commented Jul 6, 2024

If you really wish for me to release the source code here on Gists, so be it.

@ellsies
Copy link
Author

ellsies commented Jul 6, 2024

The install script has been updated to the gist, now then, could you kindly retaract your statements as we have full transparency?

@BoratTheGreatest
Copy link

Appreciate the effort! Your launcher script points to an external website though. And in the launcher script, won’t it display that message about fixing the bottles every time you launch it? And why’d you want to capture the logs to a temp file?

@ellsies
Copy link
Author

ellsies commented Jul 6, 2024

The logs to a temp file is in case anything goes wrong. And no it shouldn't display the notfication every single time, only when it expires. In theory at least, I'll need to wait for it to expire again in two weeks to make sure it doesn't do it every time.

@BoratTheGreatest
Copy link

So, uh.. will you do anything about FIX_FILE_LINK?

@mathisdrn
Copy link

100% agree linking to external website is shady practice.

@sineoxan
Copy link

sineoxan commented Jul 9, 2024

can vouch for now. applying a uninstall code helps pefres the legitimacy good going

@A7xp
Copy link

A7xp commented Jul 16, 2024

So, uh.. will you do anything about FIX_FILE_LINK?

Any updates? Do you think her script is now 100% safe and legit?

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