Skip to content

Instantly share code, notes, and snippets.

@santaklouse
Last active November 14, 2024 17:50
Show Gist options
  • Save santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef to your computer and use it in GitHub Desktop.
Save santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef to your computer and use it in GitHub Desktop.
unlimited CrossOver trial (MacOS)

Run it in console for permanent install :

bash -c "$(curl -fsSL https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/install.sh?token=$(date +%s))"

After install script will fix crossover as well as expired bottles (Thanks to @djsmax).

#!/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}\""
# reset all bottles
for file in ~/Library/Application\ Support/CrossOver/Bottles/*/.{eval,update-timestamp}; do rm -rf "${file}";done
# and after this execute original crossover
echo "${PWD}" > /tmp/co_log.log
"$($PWD/CrossOver.origin)" >> /tmp/co_log.log
#!/usr/bin/env bash
# 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
TIMESTAMP=$(date +%s)
FIX_FILE_LINK="https://gist.github.com/santaklouse/a137ee51692b74d4cf2cc1bb68ed64ef/raw/CrossOver.sh?token=${TIMESTAMP}"
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
# 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
if [ -f CrossOver.origin ]; then
echo 'original file found. Roll it back and exit.'
mv CrossOver.origin CrossOver
exit
fi;
echo 'original file not found.'
@leopm1
Copy link

leopm1 commented Jul 11, 2024

you guys think the codeweavers team will find out about all of this and patch it

@victorwads
Copy link

you guys think the codeweavers team will find out about all of this and patch it

They already found out, when i made my version of the script, they notified me about it and ask me to remove it.
1000089120

@charanjit-singh
Copy link

Don't delete it ;p

@leopm1
Copy link

leopm1 commented Jul 17, 2024

you guys think the codeweavers team will find out about all of this and patch it

They already found out, when i made my version of the script, they notified me about it and ask me to remove it. 1000089120

oof!, is it safe to assume they would patch it soon? is it safe to update to the latest version?, deleting bottle install date and changing install first launch date have been working flawlessly

@victorwads
Copy link

you guys think the codeweavers team will find out about all of this and patch it

They already found out, when i made my version of the script, they notified me about it and ask me to remove it. 1000089120

oof!, is it safe to assume they would patch it soon? is it safe to update to the latest version?, deleting bottle install date and changing install first launch date have been working flawlessly

It's been several months, no patch yet

@charanjit-singh
Copy link

Is there any option to disable auto update?

@leopm1
Copy link

leopm1 commented Jul 19, 2024

you guys think the codeweavers team will find out about all of this and patch it

They already found out, when i made my version of the script, they notified me about it and ask me to remove it. 1000089120

oof!, is it safe to assume they would patch it soon? is it safe to update to the latest version?, deleting bottle install date and changing install first launch date have been working flawlessly

It's been several months, no patch yet

so its safe to update then? what are the actual improvements on the latest version?

@ellsies
Copy link

ellsies commented Aug 20, 2024

I have started to reverse engineer CrossOver itself. As of now, I am writing a .dylib (Dynamic Library) which right now skips the demo pop-up when starting the application. I am hoping to be able to get to the point of allowing the user to "register" with a fake serial code that auto activates the product for you, which in turn will completely stop the whole issue with the trial.

@BoratTheGreatest
Copy link

I have started to reverse engineer CrossOver itself. As of now, I am writing a .dylib (Dynamic Library) which right now skips the demo pop-up when starting the application. I am hoping to be able to get to the point of allowing the user to "register" with a fake serial code that auto activates the product for you, which in turn will completely stop the whole issue with the trial.

There’s also a windows/wine part that checks expiration date and I’ll just leave this here in hopes of not getting copyrighted 000184ED07+28

@ellsies
Copy link

ellsies commented Sep 17, 2024

Quick update - I have started to decompile the licensing system of crossover itself. Doing this will help to "bruteforce" a fake license and give permanent access.

@ellsies
Copy link

ellsies commented Sep 17, 2024

As of this very moment, I have completely disassembled the licensing system part of CrossOver, and written a functional bypass to it. However, looking back at the history of the gist, its clear theres possibilities of recieving a DMCA request, and I, myself, do not have the funds to fight it. I may release it sometime in the future, but as of now, I personally think its not a good idea.

@Draggin86
Copy link

Hey @ellsies , if you need a tester, you can send me the code - draggin1986 (at) gmail.com . I am running Sonoma, 14.6.1 and trial has expired 1 month ago (current methods does not work).
Crossover 24.0.4, with option to update to 24.0.5

@ellsies
Copy link

ellsies commented Sep 17, 2024

@Draggin86 While I appreciate the offer, I have already confirmed it works on the latest versions it CrossOver (v23-24). Might I repeat, I won’t be sharing the bypass with any others due to possible risks of a DMCA.

@Draggin86
Copy link

@ellsies Got it. Enjoy it, good job on finding the workaround.

@ellsies
Copy link

ellsies commented Sep 19, 2024

Should I drop a proof of concept?

@Draggin86
Copy link

Sure, although, I am not that much into native programming / scripting.

@ellsies
Copy link

ellsies commented Sep 19, 2024

Nah it just shows the installer working and so on

@Draggin86
Copy link

Oh, I thought it would be like a concept for finding the exploit. I believe you that it's working. 😄

@ellsies
Copy link

ellsies commented Sep 19, 2024

¯_(ツ)_/¯

@TheoRax
Copy link

TheoRax commented Sep 19, 2024

that's dope, did you disassembled the licensing system using brute force?

@ellsies
Copy link

ellsies commented Sep 19, 2024

I pretty much used ghidra and such to disassemble everything

@supahfox
Copy link

supahfox commented Sep 22, 2024

I have created an update script to adapt to these changes. This link shouldn't change unless I have specified here:

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

I will continue to update this script as crossover evolves.

As of now, this script completely fixes the trial issue, and the bottle issue.

Patch isn't working as intended on Sequoia. When I restart my mac, crossover crashes and I have to repatch to get it working

@ellsies
Copy link

ellsies commented Sep 22, 2024

Huh, haven’t seen that on Sequoia before, might have to release the full bypass then

@JayanthVeerappa
Copy link

I lvoe u guys

@supahfox
Copy link

Huh, haven’t seen that on Sequoia before, might have to release the full bypass then

Looking forward to it

@dazzng
Copy link

dazzng commented Oct 7, 2024

does this work on the latest version of Crossover (24.05) patched with CX patcher?

@kseou
Copy link

kseou commented Oct 13, 2024

does this work on the latest version of Crossover (24.05) patched with CX patcher?

I just tried it and it reset it to 14 days.

@dazzng
Copy link

dazzng commented Oct 13, 2024

does this work on the latest version of Crossover (24.05) patched with CX patcher?

I just tried it and it reset it to 14 days.

How do you change the code?

@dattienle2573
Copy link

is the code still working?

@sircoderin
Copy link

This was patched after the last update
Screenshot 2024-11-13 at 11 43 29

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