first commit

This commit is contained in:
2025-09-17 14:09:41 +08:00
commit fd2685c911
5 changed files with 240 additions and 0 deletions

35
Launch Parallels.command Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/sh
PDFM_DIR="/Applications/Parallels Desktop.app"
PDFM_DISP_DST="${PDFM_DIR}/Contents/MacOS/Parallels Service.app/Contents/MacOS/prl_disp_service"
PDFM_DISP_BCUP="${PDFM_DISP_DST}_bcup"
PDFM_DISP_PATCH="${PDFM_DISP_DST}_patched"
if [ "$(pgrep -x prl_disp_service)" != "" ] && [ "$(pgrep -x prl_client_app)" != "" ]; then
open "${PDFM_DIR}"
exit 0
fi
cp -f "${PDFM_DISP_PATCH}" "${PDFM_DISP_DST}"
open "${PDFM_DIR}"
is_prl_disp_service=false
for (( i=0; i < 30; i++ )) do
if [ "$(pgrep -x prl_disp_service)" != "" ]; then
is_prl_disp_service=true
break
fi
sleep 1
done
if ! $is_prl_disp_service; then
error_message="Parallels Launcher timeout error. Please try again."
osascript -e "display dialog \"$error_message\" with title \"Error\" buttons {\"OK\"} default button \"OK\""
exit 3
fi
sleep 0.5
cp -f "${PDFM_DISP_BCUP}" "${PDFM_DISP_DST}"

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.smartcard</key>
<true/>
</dict>
</plist>

64
README.md Normal file
View File

@@ -0,0 +1,64 @@
# Parallels Desktop Crack
Crack for Parallels Desktop 19.0.0-54570
✅ ARM64<br>
✅ x86_64<br>
✅ Network<br>
✅ USB<br>
✅ System Integrity Protection (SIP)
## Usage
1. Install Parallels Desktop:<br>
https://download.parallels.com/desktop/v19/19.0.0-54570/ParallelsDesktop-19.0.0-54570.dmg
3. Sign out your'e account
4. `chmod +x install.sh && chmod +x Launch\ Parallels.command && sudo ./install.sh`
5. Double click `Launch Parallels.command`
You will always need to use this launcher as a workaround to prevent signature errors from occurring. However, if you are a developer with permission to use com.apple.vm.* or are willing to disable System Integrity Protection, there is a better approach available.
### Operation not permitted
Enable `System Preferences ▸ Security & Privacy ▸ Privacy ▸ Full Disk Access`
### codesign error
Ensure xcode command line tools installed. Install it with using the command `xcode-select --install`.
Check installation with `xcode-select -p`, which will output `/Library/Developer/CommandLineTools` or `/Applications/Xcode.app/Contents/Developer`.
## Hosts
You also wan't too block Parallels Servers.
```
127.0.0.1 download.parallels.com
127.0.0.1 update.parallels.com
127.0.0.1 desktop.parallels.com
127.0.0.1 download.parallels.com.cdn.cloudflare.net
127.0.0.1 update.parallels.com.cdn.cloudflare.net
127.0.0.1 desktop.parallels.com.cdn.cloudflare.net
127.0.0.1 www.parallels.cn
127.0.0.1 www.parallels.com
127.0.0.1 www.parallels.de
127.0.0.1 www.parallels.es
127.0.0.1 www.parallels.fr
127.0.0.1 www.parallels.nl
127.0.0.1 www.parallels.pt
127.0.0.1 www.parallels.ru
127.0.0.1 www.parallelskorea.com
127.0.0.1 reportus.parallels.com
127.0.0.1 parallels.cn
127.0.0.1 parallels.com
127.0.0.1 parallels.de
127.0.0.1 parallels.es
127.0.0.1 parallels.fr
127.0.0.1 parallels.nl
127.0.0.1 parallels.pt
127.0.0.1 parallels.ru
127.0.0.1 parallelskorea.com
127.0.0.1 pax-manager.myparallels.com
127.0.0.1 myparallels.com
127.0.0.1 my.parallels.com
```
Parallels Desktop will uncomment these, therefore one needs to lock the hosts file:
`sudo chflags uchg /etc/hosts && sudo chflags schg /etc/hosts`
### OS download
You will not be able to download operating systems in the Control Center anymore. Comment these out to get this functionality:
```
# 127.0.0.1 download.parallels.com
# 127.0.0.1 desktop.parallels.com
# 127.0.0.1 download.parallels.com.cdn.cloudflare.net
# 127.0.0.1 desktop.parallels.com.cdn.cloudflare.net
```

132
install.sh Executable file
View File

@@ -0,0 +1,132 @@
#!/usr/bin/env bash
COLOR_INFO='\033[0;34m'
COLOR_ERR='\033[0;35m'
COLOR_WARN='\033[0;93m'
NOCOLOR='\033[0m'
BASE_PATH=$(
cd $(dirname "$0");
pwd
)
PDFM_VER="19.0.0-54570"
PDFM_DIR="/Applications/Parallels Desktop.app"
LICENSE_FILE="${BASE_PATH}/licenses.json"
LICENSE_DST="/Library/Preferences/Parallels/licenses.json"
PDFM_DISP_DIR="${PDFM_DIR}/Contents/MacOS/Parallels Service.app/Contents/MacOS"
PDFM_DISP_DST="${PDFM_DISP_DIR}/prl_disp_service"
PDFM_DISP_BCUP="${PDFM_DISP_DST}_bcup"
PDFM_DISP_PATCH="${PDFM_DISP_DST}_patched"
PDFM_DISP_ENT="${BASE_PATH}/ParallelsService.entitlements"
TMP_DIR="${BASE_PATH}/tmp"
ARM64_RET_1="${TMP_DIR}/arm64_ret_1"
X86_64_RET_1="${TMP_DIR}/x86_64_ret_1"
# check parallels desktop version
VERSION_1=$(defaults read "${PDFM_DIR}/Contents/Info.plist" CFBundleShortVersionString)
VERSION_2=$(defaults read "${PDFM_DIR}/Contents/Info.plist" CFBundleVersion)
INSTALL_VER="${VERSION_1}-${VERSION_2}"
if [ "${PDFM_VER}" != "${VERSION_1}-${VERSION_2}" ]; then
echo -e "${COLOR_ERR}[-] This script is for ${PDFM_VER}, but your's is ${INSTALL_VER}.${NOCOLOR}"
exit 2
fi
# check root permission
if [ "$EUID" -ne 0 ]; then
echo -e "${COLOR_ERR}[-] Missing root permission, run sudo.${NOCOLOR}"
exec sudo "$0" "$@"
exit 5
fi
# stop prl_disp_service
if pgrep -x "prl_disp_service" &> /dev/null; then
echo -e "${COLOR_INFO}[*] Stopping Parallels Desktop${NOCOLOR}"
pkill -9 prl_client_app &>/dev/null
# ensure prl_disp_service has stopped
"${PDFM_DIR}/Contents/MacOS/Parallels Service" service_stop &>/dev/null
sleep 1
launchctl stop /Library/LaunchDaemons/com.parallels.desktop.launchdaemon.plist &>/dev/null
sleep 1
pkill -9 prl_disp_service &>/dev/null
sleep 1
rm -f "/var/run/prl_*"
fi
echo -e "${COLOR_INFO}[*] Installing...${NOCOLOR}"
# prepare temp folder and files
if [ ! -d "${TMP_DIR}" ]; then
mkdir "${TMP_DIR}"
fi
if [ ! -f "${ARM64_RET_1}" ]; then
echo -n -e '\x20\x0\x80\xd2\xc0\x03\x5f\xd6' > "${ARM64_RET_1}"
fi
if [ ! -f "${X86_64_RET_1}" ]; then
echo -n -e '\x6a\x01\x58\xc3' > "${X86_64_RET_1}"
fi
# patch prl_disp_service
if [ ! -f "${PDFM_DISP_BCUP}" ]
then
cp "${PDFM_DISP_DST}" "${PDFM_DISP_BCUP}"
fi
chflags -R 0 "${PDFM_DISP_DST}"
# arm64 signcheckerimpl
# 0x10a44a8
dd if="${ARM64_RET_1}" of="${PDFM_DISP_DST}" obs=1 seek=17450152 conv=notrunc
# arm64 codesign
# 0x127a55c
dd if="${ARM64_RET_1}" of="${PDFM_DISP_DST}" obs=1 seek=19375452 conv=notrunc
# x86_64 signcheckerimpl
# 0x5b1530
dd if="${X86_64_RET_1}" of="${PDFM_DISP_DST}" obs=1 seek=5969200 conv=notrunc
# x86_64 codesign
# 0x7c85d0
dd if="${X86_64_RET_1}" of="${PDFM_DISP_DST}" obs=1 seek=8160720 conv=notrunc
chown root:wheel "${PDFM_DISP_DST}"
chmod 755 "${PDFM_DISP_DST}"
codesign -f -s - --timestamp=none --all-architectures --entitlements "${PDFM_DISP_ENT}" "${PDFM_DISP_DST}"
cp "${PDFM_DISP_DST}" "${PDFM_DISP_PATCH}"
# delete temp folder
rm -rf "${TMP_DIR}"
# install fake license
if [ -f "${LICENSE_DST}" ]; then
chflags -R 0 "${LICENSE_DST}"
rm -f "${LICENSE_DST}" > /dev/null
fi
cp -f "${LICENSE_FILE}" "${LICENSE_DST}"
chown root:wheel "${LICENSE_DST}"
chmod 444 "${LICENSE_DST}"
chflags -R 0 "${LICENSE_DST}"
chflags uchg "${LICENSE_DST}"
chflags schg "${LICENSE_DST}"
# start prl_disp_service
if ! pgrep -x "prl_disp_service" &>/dev/null; then
echo -e "${COLOR_INFO}[*] Starting Parallels Service${NOCOLOR}"
"${PDFM_DIR}/Contents/MacOS/Parallels Service" service_restart &>/dev/null
for (( i=0; i < 10; ++i ))
do
if pgrep -x "prl_disp_service" &>/dev/null; then
break
fi
sleep 1
done
if ! pgrep -x "prl_disp_service" &>/dev/null; then
echo -e "${COLOR_ERR}[x] Starting Service fail.${NOCOLOR}"
fi
fi
"${PDFM_DIR}/Contents/MacOS/prlsrvctl" web-portal signout &>/dev/null
"${PDFM_DIR}/Contents/MacOS/prlsrvctl" set --cep off &>/dev/null
"${PDFM_DIR}/Contents/MacOS/prlsrvctl" set --allow-attach-screenshots off &>/dev/null
chown -R "$(id -un)":admin "${PDFM_DISP_DIR}"
echo -e "${COLOR_WARN}Remember to start Parallels using \"Launch Parallels.command\"${NOCOLOR}"

1
licenses.json Normal file
View File

@@ -0,0 +1 @@
{"license":"{\"product_version\":\"19.*\",\"edition\":2,\"platform\":3,\"product\":7,\"offline\":true,\"cpu_limit\":32,\"ram_limit\":131072}"}