first commit
This commit is contained in:
35
Launch Parallels.command
Executable file
35
Launch Parallels.command
Executable 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}"
|
8
ParallelsService.entitlements
Normal file
8
ParallelsService.entitlements
Normal 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
64
README.md
Normal 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
132
install.sh
Executable 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
1
licenses.json
Normal file
@@ -0,0 +1 @@
|
||||
{"license":"{\"product_version\":\"19.*\",\"edition\":2,\"platform\":3,\"product\":7,\"offline\":true,\"cpu_limit\":32,\"ram_limit\":131072}"}
|
Reference in New Issue
Block a user