Skip to content

Instantly share code, notes, and snippets.

@ellsies
Last active January 7, 2026 16:25
Show Gist options
  • Select an option

  • Save ellsies/e9383c75fd8cd8d5781dac91d7e2360d to your computer and use it in GitHub Desktop.

Select an option

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://gist.githubusercontent.com/ellsies/e9383c75fd8cd8d5781dac91d7e2360d/raw/d4431abd07cdcd83853567b646d0b68bf66c7e6c/Crossover.sh"
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
@tahirjamil
Copy link

get an error saying that it couldn't rename CrossOver to CrossOver.origin, and my trial time still goes down in the app. Any way to fix this?

You can give terminal full file access to fix the error. Go to -> System Settings -> Privacy -> Full Disk Access then click the little '+' icon and add terminal.

@tahirjamil
Copy link

ram and now crossover no longer launches just give 2 notifications

just uninstalled the script and it got fixed. the script already set my crossover to reset so I can install again after 14 days

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