PD 17.1.4-51567 intel crack

This commit is contained in:
somebasj 2022-07-27 23:00:42 +08:00
commit b9b8dbfd72
15 changed files with 2551 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
.DS_Store
*.dylib
/build
/tmp
/publish

6
.gitmodules vendored Normal file
View File

@ -0,0 +1,6 @@
[submodule "Dobby"]
path = Dobby
url = https://github.com/jmpews/Dobby
[submodule "deps/Dobby"]
path = deps/Dobby
url = https://github.com/jmpews/Dobby

49
CMakeLists.txt Normal file
View File

@ -0,0 +1,49 @@
cmake_minimum_required(VERSION 3.20)
project(Configurer64)
set(DOBBY_GENERATE_SHARED OFF CACHE BOOL "" FORCE)
set(DOBBY_DEBUG OFF CACHE BOOL "" FORCE)
set(NearBranch ON CACHE BOOL "" FORCE)
set(DynamicBinaryInstrument OFF CACHE BOOL "" FORCE)
set(FullFloatingPointRegisterPack OFF CACHE BOOL "" FORCE)
set(EnableObfuscation OFF CACHE BOOL "" FORCE)
set(Plugin.SymbolResolver OFF CACHE BOOL "" FORCE)
set(Plugin.GlobalOffsetTableHook ON CACHE BOOL "" FORCE)
set(Plugin.LinkerLoadCallback OFF CACHE BOOL "" FORCE)
set(Plugin.ApplicationEventMonitor OFF CACHE BOOL "" FORCE)
set(Plugin.Android.BionicLinkerRestriction OFF CACHE BOOL "" FORCE)
add_subdirectory(deps/Dobby)
add_library(${PROJECT_NAME} SHARED
src/main.cpp
)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
target_compile_options(${PROJECT_NAME} PRIVATE
-stdlib=libc++
-fno-rtti
-fvisibility=hidden
-fvisibility-inlines-hidden
)
target_compile_options(${PROJECT_NAME} PRIVATE
-fpass-plugin=${CMAKE_SOURCE_DIR}/ollvm.dylib
)
target_link_libraries(${PROJECT_NAME} PRIVATE
"-framework Foundation"
"-framework CoreFoundation"
"-framework AppKit"
"-framework Cocoa"
)
target_link_libraries(${PROJECT_NAME} PRIVATE
objc
dobby
)
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_SOURCE_DIR}/Dobby/include
)

BIN
assets/PDFM.VolumeIcon.icns Normal file

Binary file not shown.

BIN
assets/PDFM.background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

BIN
assets/PTFM.VolumeIcon.icns Normal file

Binary file not shown.

BIN
assets/PTFM.background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

1
deps/Dobby vendored Submodule

@ -0,0 +1 @@
Subproject commit 223aabced0431525c7d45196f9409fc505d58ac8

22
scripts/build.sh Normal file
View File

@ -0,0 +1,22 @@
#!/bin/bash
CUR_PATH=$(cd "$(dirname $(readlink -f "$0"))" && pwd)
ROOT_PATH=$(cd "${CUR_PATH}/../" && pwd)
export CC
export CXX
export PATH
if [ -f /usr/local/opt/llvm/bin/clang ]; then
CC=/usr/local/opt/llvm/bin/clang
CXX=/usr/local/opt/llvm/bin/clang++
PATH="/usr/local/opt/llvm/bin:$PATH"
fi
cmake -S "${ROOT_PATH}" -B "${ROOT_PATH}/build" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="11.0" \
-DLOGGING_DISABLE=1 \
&& \
cmake --build "${ROOT_PATH}/build" --target Configurer64 -j8

BIN
scripts/insert_dylib Normal file

Binary file not shown.

129
scripts/install.sh Normal file
View File

@ -0,0 +1,129 @@
#!/bin/bash
CUR_PATH=$(cd "$(dirname $(readlink -f "$0"))" && pwd)
PT_ROOT_DIR="/Applications/Parallels Toolbox.app"
PD_ROOT_DIR="/Applications/Parallels Desktop.app"
CRACK_LIB="${CUR_DIR}/../build/libConfigurer64.dylib"
# CODESIGN_CERT=B8474E27C322DFB3D4A0168127EB02DB877C3F81
CODESIGN_CERT=-
function sign_cmd() {
codesign -f -s ${CODESIGN_CERT} --all-architectures --deep "$1"
}
function kill_pt_app() {
killall -9 "Parallels Toolbox"
}
function kill_pd_app() {
killall -9 prl_client_app
}
function apply_pt_crack() {
if [ -f /usr/local/opt/llvm/bin/llvm-strip ]; then
/usr/local/opt/llvm/bin/llvm-strip -s "${CRACK_LIB}"
fi
cp "${CRACK_LIB}" "${PT_ROOT_DIR}/Contents/Frameworks/libConfigurer64.dylib"
if [ ! -f "${PT_ROOT_DIR}/Contents/Frameworks/libLogging.dylib.bak" ]; then
cp "${PT_ROOT_DIR}/Contents/Frameworks/libLogging.dylib" "${PT_ROOT_DIR}/Contents/Frameworks/libLogging.dylib.bak"
"${CUR_DIR}/insert_dylib" --inplace --all-yes \
"@rpath/libConfigurer64.dylib" \
"${PT_ROOT_DIR}/Contents/Frameworks/libLogging.dylib"
fi
}
function apply_pd_crack() {
if [ -f /usr/local/opt/llvm/bin/llvm-strip ]; then
/usr/local/opt/llvm/bin/llvm-strip -s "${CRACK_LIB}"
fi
cp "${CRACK_LIB}" "${PD_ROOT_DIR}/Contents/Frameworks/libConfigurer64.dylib"
if [ ! -f "${PD_ROOT_DIR}/Contents/Frameworks/QtXml.framework/Versions/5/QtXml.bak" ]; then
cp "${PD_ROOT_DIR}/Contents/Frameworks/QtXml.framework/Versions/5/QtXml" "${PD_ROOT_DIR}/Contents/Frameworks/QtXml.framework/Versions/5/QtXml.bak"
"${CUR_DIR}/insert_dylib" --inplace --all-yes \
"@rpath/libConfigurer64.dylib" \
"${PD_ROOT_DIR}/Contents/Frameworks/QtXml.framework/Versions/5/QtXml"
fi
}
function sign_pt() {
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Airplane Mode.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Alarm.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Archive.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Barcode Generator.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Barcode Reader.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Break Time.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/CPU Temperature.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Capture Area.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Capture Screen.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Capture Window.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Clean Drive.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Clipboard History.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Convert Video.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Date Countdown.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Do Not Disturb.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Do Not Sleep.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Download Audio.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Download Video.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Eject Volumes.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Encrypt Files.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Energy Saver.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Find Duplicates.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Focus on Window.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Free Memory.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Hidden Files.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Hide Desktop Files.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Hide Menu Icons.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Launch.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Lock Screen.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Make GIF.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Mute Microphone.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Parallels Tool Launcher.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Presentation Mode.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Recognize Text.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Record Area.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Record Audio.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Record Screen.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Record Window.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Resize Images.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Screenshot Page.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Show Desktop.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Sleep Timer.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Stopwatch.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Switch Resolution.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Take Photo.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Take Video.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Timer.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Transform Text.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Unarchive.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Uninstall Apps.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Unit Converter.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Verify Checksum.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/Window Manager.app"
sign_cmd "${PT_ROOT_DIR}/Contents/Applications/World Time.app"
sign_cmd "${PT_ROOT_DIR}/Parallels Toolbox.app"
}
function sign_pd() {
sign_cmd "${PD_ROOT_DIR}/Contents/Applications/Parallels Link.app"
sign_cmd "${PD_ROOT_DIR}/Contents/Applications/Parallels Mounter.app"
sign_cmd "${PD_ROOT_DIR}/Contents/Applications/Parallels Technical Data Reporter.app"
sign_cmd "${PD_ROOT_DIR}/Contents/MacOS/Parallels Mac VM.app"
sign_cmd "${PD_ROOT_DIR}/Contents/MacOS/Parallels Service.app"
sign_cmd "${PD_ROOT_DIR}/Contents/MacOS/Parallels VM 10.14.app"
sign_cmd "${PD_ROOT_DIR}/Contents/MacOS/Parallels VM.app"
sign_cmd "${PD_ROOT_DIR}/Parallels Desktop.app"
}
kill_pt_app
kill_pd_app
apply_pt_crack
apply_pd_crack
sign_pt
sign_pd

259
scripts/publish.sh Normal file
View File

@ -0,0 +1,259 @@
#!/bin/bash
CUR_PATH=$(cd "$(dirname $(readlink -f "$0"))" && pwd)
ROOT_PATH=$(cd "${CUR_PATH}/../" && pwd)
TEMP_PATH="${ROOT_PATH}/tmp"
PUBLISH_PATH="${ROOT_PATH}/publish"
PTFM_VERSION="5.5.1-4410"
PDFM_VERSION="17.1.4-51567"
PTFM_SHA256SUM="412bddebac28e229c7973dad6d702c67d1b42195b99b009af26ef036f5631349"
PDFM_SHA256SUM="8232f140e4c5b95821bf5063fb37db356f7bab520ddabbab4a73d08b5de0cd10"
PTFM_DMG_DOWNLOAD_URL="https://download.parallels.com/toolbox/v5/${PTFM_VERSION}/ParallelsToolbox-${PTFM_VERSION}.dmg"
PDFM_DMG_DOWNLOAD_URL="https://download.parallels.com/desktop/v17/${PDFM_VERSION}/ParallelsDesktop-${PDFM_VERSION}.dmg"
PTFM_DMG_FILE="${TEMP_PATH}/download/ParallelsToolbox-${PTFM_VERSION}.dmg"
PDFM_DMG_FILE="${TEMP_PATH}/download/ParallelsDesktop-${PDFM_VERSION}.dmg"
PTFM_PUBLISH_FILE="${PUBLISH_PATH}/ParallelsToolbox-${PTFM_VERSION}_Crack.dmg"
PDFM_PUBLISH_FILE="${PUBLISH_PATH}/ParallelsDesktop-${PDFM_VERSION}_Crack.dmg"
# CODESIGN_CERT=B8474E27C322DFB3D4A0168127EB02DB877C3F81
CODESIGN_CERT=-
CRACK_LIB="${ROOT_PATH}/build/libConfigurer64.dylib"
PTFM_TMP_DIR="${TEMP_PATH}/ptfm_files"
PDFM_TMP_DIR="${TEMP_PATH}/pdfm_files"
function sign_cmd() {
codesign -f -s ${CODESIGN_CERT} --all-architectures --deep "$1"
}
function ensure_download_ptfm_dmg() {
echo "check ${PTFM_DMG_FILE}"
if [ ! -f "${PTFM_DMG_FILE}" ]; then
echo "download ${PTFM_DMG_DOWNLOAD_URL}"
mkdir -p $(dirname "${PTFM_DMG_FILE}")
curl -L --progress-bar -o "${PTFM_DMG_FILE}" "${PTFM_DMG_DOWNLOAD_URL}"
fi
}
function ensure_download_pdfm_dmg() {
echo "check ${PDFM_DMG_FILE}"
if [ ! -f "${PDFM_DMG_FILE}" ]; then
echo "download ${PDFM_DMG_DOWNLOAD_URL}"
mkdir -p $(dirname "${PDFM_DMG_FILE}")
curl -L --progress-bar -o "${PDFM_DMG_FILE}" "${PDFM_DMG_DOWNLOAD_URL}"
fi
}
function copy_ptfm_files() {
echo "copy files"
if [ -d "${PTFM_TMP_DIR}" ]; then
rm -rf "${PTFM_TMP_DIR}" > /dev/null
fi
mkdir -p "${PTFM_TMP_DIR}" > /dev/null
hdiutil attach -noverify -noautofsck -noautoopen "${PTFM_DMG_FILE}"
cp -R -X "/Volumes/Parallels Toolbox/Install Parallels Toolbox.app" "${PTFM_TMP_DIR}/" > /dev/null
hdiutil detach "/Volumes/Parallels Toolbox"
rm -f "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/embedded.provisionprofile" > /dev/null
chflags -R 0 "${PTFM_TMP_DIR}" > /dev/null
xattr -cr "${PTFM_TMP_DIR}" > /dev/null
}
function copy_pdfm_files() {
echo "copy files"
if [ -d "${PDFM_TMP_DIR}" ]; then
rm -rf "${PDFM_TMP_DIR}" > /dev/null
fi
mkdir -p "${PDFM_TMP_DIR}" > /dev/null
hdiutil attach -noverify -noautofsck -noautoopen "${PDFM_DMG_FILE}"
cp -R -X "/Volumes/Parallels Desktop 17/Install.app" "${PDFM_TMP_DIR}/" > /dev/null
cp -R -X "/Volumes/Parallels Desktop 17/Parallels Desktop.app" "${PDFM_TMP_DIR}/" > /dev/null
hdiutil detach "/Volumes/Parallels Desktop 17"
rm -f "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/embedded.provisionprofile" > /dev/null
chflags -R 0 "${PDFM_TMP_DIR}" > /dev/null
xattr -cr "${PDFM_TMP_DIR}" > /dev/null
}
function apply_ptfm_crack() {
echo "apply patch"
if [ -f /usr/local/opt/llvm/bin/llvm-strip ]; then
/usr/local/opt/llvm/bin/llvm-strip -s "${CRACK_LIB}" > /dev/null
fi
cp -f -X "${CRACK_LIB}" \
"${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Frameworks/libConfigurer64.dylib" \
> /dev/null
"${CUR_PATH}/insert_dylib" --inplace --all-yes \
"@rpath/libConfigurer64.dylib" \
"${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Frameworks/libLogging.dylib" \
> /dev/null
}
function apply_pdfm_crack() {
echo "apply patch"
if [ -f /usr/local/opt/llvm/bin/llvm-strip ]; then
/usr/local/opt/llvm/bin/llvm-strip -s "${CRACK_LIB}" > /dev/null
fi
cp -f -X "${CRACK_LIB}" \
"${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Frameworks/libConfigurer64.dylib" \
> /dev/null
"${CUR_PATH}/insert_dylib" --inplace --all-yes \
"@rpath/libConfigurer64.dylib" \
"${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Frameworks/QtXml.framework/Versions/5/QtXml" \
> /dev/null
}
function sign_ptfm() {
echo "sign app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Library/Install/ToolboxInstaller"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Airplane Mode.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Alarm.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Archive.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Barcode Generator.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Barcode Reader.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Break Time.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/CPU Temperature.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Capture Area.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Capture Screen.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Capture Window.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Clean Drive.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Clipboard History.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Convert Video.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Date Countdown.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Do Not Disturb.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Do Not Sleep.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Download Audio.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Download Video.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Eject Volumes.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Encrypt Files.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Energy Saver.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Find Duplicates.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Focus on Window.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Free Memory.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Hidden Files.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Hide Desktop Files.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Hide Menu Icons.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Launch.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Lock Screen.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Make GIF.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Mute Microphone.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Parallels Tool Launcher.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Presentation Mode.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Recognize Text.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Record Area.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Record Audio.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Record Screen.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Record Window.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Resize Images.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Screenshot Page.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Show Desktop.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Sleep Timer.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Stopwatch.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Switch Resolution.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Take Photo.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Take Video.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Timer.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Transform Text.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Unarchive.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Uninstall Apps.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Unit Converter.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Verify Checksum.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/Window Manager.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Applications/World Time.app"
sign_cmd "${PTFM_TMP_DIR}/Install Parallels Toolbox.app"
}
function sign_pdfm() {
echo "sign app"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Applications/Parallels Link.app"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Applications/Parallels Mounter.app"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Applications/Parallels Technical Data Reporter.app"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels Mac VM.app"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels Service.app"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels VM 10.14.app"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels VM.app"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app"
sign_cmd "${PDFM_TMP_DIR}/Install.app"
}
function set_pdfm_app_hide() {
chflags hidden "${PDFM_TMP_DIR}/Parallels Desktop.app" > /dev/null
}
function create_ptfm_dmg() {
echo "create dmg ${PTFM_PUBLISH_FILE}"
mkdir -p "${PUBLISH_PATH}"
if [ -f "${PTFM_PUBLISH_FILE}" ]; then
rm -f "${PTFM_PUBLISH_FILE}" > /dev/null
fi
create-dmg \
--volname "Parallels Toolbox" \
--volicon "${ROOT_PATH}/assets/PTFM.VolumeIcon.icns" \
--background "${ROOT_PATH}/assets/PTFM.background.png" \
--window-pos 0 0 \
--window-size 640 415 \
--icon-size 256 \
--icon "Install Parallels Toolbox.app" 450 126 \
--codesign ${CODESIGN_CERT} \
"${PTFM_PUBLISH_FILE}" \
"${PTFM_TMP_DIR}/"
}
function create_pdfm_dmg() {
echo "create dmg ${PDFM_PUBLISH_FILE}"
mkdir -p "${PUBLISH_PATH}"
if [ -f "${PDFM_PUBLISH_FILE}" ]; then
rm -f "${PDFM_PUBLISH_FILE}" > /dev/null
fi
create-dmg \
--volname "Parallels Desktop 17" \
--volicon "${ROOT_PATH}/assets/PDFM.VolumeIcon.icns" \
--background "${ROOT_PATH}/assets/PDFM.background.png" \
--window-pos 0 0 \
--window-size 640 415 \
--icon-size 256 \
--icon "Install.app" 450 126 \
--codesign ${CODESIGN_CERT} \
"${PDFM_PUBLISH_FILE}" \
"${PDFM_TMP_DIR}/"
}
function publish_ptfm_crack_dmg() {
ensure_download_ptfm_dmg
copy_ptfm_files
apply_ptfm_crack
sign_ptfm
create_ptfm_dmg
}
function publish_pdfm_crack_dmg() {
ensure_download_pdfm_dmg
copy_pdfm_files
apply_pdfm_crack
sign_pdfm
set_pdfm_app_hide
create_pdfm_dmg
}
publish_ptfm_crack_dmg
publish_pdfm_crack_dmg

10
scripts/rebuild.sh Normal file
View File

@ -0,0 +1,10 @@
#!/bin/bash
CUR_PATH=$(cd "$(dirname $(readlink -f "$0"))" && pwd)
ROOT_PATH=$(cd "${CUR_PATH}/../" && pwd)
if [ -d "${ROOT_PATH}/build" ]; then
rm -rf "${ROOT_PATH}/build" > /dev/null
fi
exec "${CUR_PATH}/build.sh"

1828
src/main.cpp Normal file

File diff suppressed because one or more lines are too long

242
src/xorstr.hpp Normal file
View File

@ -0,0 +1,242 @@
/*
* Copyright 2017 - 2021 Justas Masiulis
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef JM_XORSTR_HPP
#define JM_XORSTR_HPP
#if defined(_M_ARM64) || defined(__aarch64__) || defined(_M_ARM) || defined(__arm__)
#include <arm_neon.h>
#elif defined(_M_X64) || defined(__amd64__) || defined(_M_IX86) || defined(__i386__)
#include <immintrin.h>
#else
#error Unsupported platform
#endif
#include <cstdint>
#include <cstddef>
#include <utility>
#include <type_traits>
#define xorstr(str) ::OqYAfkhl::swG([]() { return str; }, std::integral_constant<std::size_t, sizeof(str) / sizeof(*str)>{}, std::make_index_sequence<::OqYAfkhl::CtKWt::UfWL<sizeof(str)>()>{})
#define xorstr_(str) xorstr(str).Pr()
#ifdef _MSC_VER
#define XORSTR_FORCEINLINE __forceinline
#else
#define XORSTR_FORCEINLINE __attribute__((always_inline)) inline
#endif
namespace OqYAfkhl {
namespace CtKWt {
template<std::size_t Size>
XORSTR_FORCEINLINE constexpr std::size_t UfWL()
{
return ((Size / 16) + (Size % 16 != 0)) * 2;
}
template<std::uint32_t Seed>
XORSTR_FORCEINLINE constexpr std::uint32_t rY() noexcept
{
std::uint32_t value = Seed;
for(char c : __TIME__)
value = static_cast<std::uint32_t>((value ^ c) * 16777619ull);
return value;
}
template<std::size_t S>
XORSTR_FORCEINLINE constexpr std::uint64_t WL()
{
constexpr auto first_part = rY<2166136261 + S>();
constexpr auto second_part = rY<first_part>();
return (static_cast<std::uint64_t>(first_part) << 32) | second_part;
}
// loads up to 8 characters of string into uint64 and xors it with the key
template<std::size_t N, class CharT>
XORSTR_FORCEINLINE constexpr std::uint64_t
EE(std::uint64_t key, std::size_t idx, const CharT* str) noexcept
{
using cast_type = typename std::make_unsigned<CharT>::type;
constexpr auto value_size = sizeof(CharT);
constexpr auto idx_offset = 8 / value_size;
std::uint64_t value = key;
for(std::size_t i = 0; i < idx_offset && i + idx * idx_offset < N; ++i)
value ^=
(std::uint64_t{ static_cast<cast_type>(str[i + idx * idx_offset]) }
<< ((i % idx_offset) * 8 * value_size));
return value;
}
// forces compiler to use registers instead of stuffing constants in rdata
XORSTR_FORCEINLINE std::uint64_t Fw(std::uint64_t value) noexcept
{
#if defined(__clang__) || defined(__GNUC__)
asm("" : "=r"(value) : "0"(value) :);
return value;
#else
volatile std::uint64_t reg = value;
return reg;
#endif
}
} // namespace detail
template<class CharT, std::size_t Size, class Keys, class Indices>
class swG;
template<class CharT, std::size_t Size, std::uint64_t... Keys, std::size_t... Indices>
class swG<CharT, Size, std::integer_sequence<std::uint64_t, Keys...>, std::index_sequence<Indices...>> {
#ifndef JM_XORSTR_DISABLE_AVX_INTRINSICS
constexpr static inline std::uint64_t alignment = ((Size > 16) ? 32 : 16);
#else
constexpr static inline std::uint64_t alignment = 16;
#endif
alignas(alignment) std::uint64_t _storage[sizeof...(Keys)];
public:
using value_type = CharT;
using size_type = std::size_t;
using pointer = CharT*;
using const_pointer = const CharT*;
template<class L>
XORSTR_FORCEINLINE swG(L l, std::integral_constant<std::size_t, Size>, std::index_sequence<Indices...>) noexcept
: _storage{ ::OqYAfkhl::CtKWt::Fw((std::integral_constant<std::uint64_t, CtKWt::EE<Size>(Keys, Indices, l())>::value))... }
{}
XORSTR_FORCEINLINE constexpr size_type size() const noexcept
{
return Size - 1;
}
XORSTR_FORCEINLINE void fO() noexcept
{
// everything is inlined by hand because a certain compiler with a certain linker is _very_ slow
#if defined(__clang__)
alignas(alignment)
std::uint64_t arr[]{ ::OqYAfkhl::CtKWt::Fw(Keys)... };
std::uint64_t* keys =
(std::uint64_t*)::OqYAfkhl::CtKWt::Fw((std::uint64_t)arr);
#else
alignas(alignment) std::uint64_t keys[]{ ::OqYAfkhl::CtKWt::Fw(Keys)... };
#endif
#if defined(_M_ARM64) || defined(__aarch64__) || defined(_M_ARM) || defined(__arm__)
#if defined(__clang__)
((Indices >= sizeof(_storage) / 16 ? static_cast<void>(0) : __builtin_neon_vst1q_v(
reinterpret_cast<uint64_t*>(_storage) + Indices * 2,
veorq_u64(__builtin_neon_vld1q_v(reinterpret_cast<const uint64_t*>(_storage) + Indices * 2, 51),
__builtin_neon_vld1q_v(reinterpret_cast<const uint64_t*>(keys) + Indices * 2, 51)),
51)), ...);
#else // GCC, MSVC
((Indices >= sizeof(_storage) / 16 ? static_cast<void>(0) : vst1q_u64(
reinterpret_cast<uint64_t*>(_storage) + Indices * 2,
veorq_u64(vld1q_u64(reinterpret_cast<const uint64_t*>(_storage) + Indices * 2),
vld1q_u64(reinterpret_cast<const uint64_t*>(keys) + Indices * 2)))), ...);
#endif
#elif !defined(JM_XORSTR_DISABLE_AVX_INTRINSICS)
((Indices >= sizeof(_storage) / 32 ? static_cast<void>(0) : _mm256_store_si256(
reinterpret_cast<__m256i*>(_storage) + Indices,
_mm256_xor_si256(
_mm256_load_si256(reinterpret_cast<const __m256i*>(_storage) + Indices),
_mm256_load_si256(reinterpret_cast<const __m256i*>(keys) + Indices)))), ...);
if constexpr(sizeof(_storage) % 32 != 0)
_mm_store_si128(
reinterpret_cast<__m128i*>(_storage + sizeof...(Keys) - 2),
_mm_xor_si128(_mm_load_si128(reinterpret_cast<const __m128i*>(_storage + sizeof...(Keys) - 2)),
_mm_load_si128(reinterpret_cast<const __m128i*>(keys + sizeof...(Keys) - 2))));
#else
((Indices >= sizeof(_storage) / 16 ? static_cast<void>(0) : _mm_store_si128(
reinterpret_cast<__m128i*>(_storage) + Indices,
_mm_xor_si128(_mm_load_si128(reinterpret_cast<const __m128i*>(_storage) + Indices),
_mm_load_si128(reinterpret_cast<const __m128i*>(keys) + Indices)))), ...);
#endif
}
XORSTR_FORCEINLINE const_pointer Ce() const noexcept
{
return reinterpret_cast<const_pointer>(_storage);
}
XORSTR_FORCEINLINE pointer Ce() noexcept
{
return reinterpret_cast<pointer>(_storage);
}
XORSTR_FORCEINLINE pointer Pr() noexcept
{
// fO() is inlined by hand because a certain compiler with a certain linker is _very_ slow
#if defined(__clang__)
alignas(alignment)
std::uint64_t arr[]{ ::OqYAfkhl::CtKWt::Fw(Keys)... };
std::uint64_t* keys =
(std::uint64_t*)::OqYAfkhl::CtKWt::Fw((std::uint64_t)arr);
#else
alignas(alignment) std::uint64_t keys[]{ ::OqYAfkhl::CtKWt::Fw(Keys)... };
#endif
#if defined(_M_ARM64) || defined(__aarch64__) || defined(_M_ARM) || defined(__arm__)
#if defined(__clang__)
((Indices >= sizeof(_storage) / 16 ? static_cast<void>(0) : __builtin_neon_vst1q_v(
reinterpret_cast<uint64_t*>(_storage) + Indices * 2,
veorq_u64(__builtin_neon_vld1q_v(reinterpret_cast<const uint64_t*>(_storage) + Indices * 2, 51),
__builtin_neon_vld1q_v(reinterpret_cast<const uint64_t*>(keys) + Indices * 2, 51)),
51)), ...);
#else // GCC, MSVC
((Indices >= sizeof(_storage) / 16 ? static_cast<void>(0) : vst1q_u64(
reinterpret_cast<uint64_t*>(_storage) + Indices * 2,
veorq_u64(vld1q_u64(reinterpret_cast<const uint64_t*>(_storage) + Indices * 2),
vld1q_u64(reinterpret_cast<const uint64_t*>(keys) + Indices * 2)))), ...);
#endif
#elif !defined(JM_XORSTR_DISABLE_AVX_INTRINSICS)
((Indices >= sizeof(_storage) / 32 ? static_cast<void>(0) : _mm256_store_si256(
reinterpret_cast<__m256i*>(_storage) + Indices,
_mm256_xor_si256(
_mm256_load_si256(reinterpret_cast<const __m256i*>(_storage) + Indices),
_mm256_load_si256(reinterpret_cast<const __m256i*>(keys) + Indices)))), ...);
if constexpr(sizeof(_storage) % 32 != 0)
_mm_store_si128(
reinterpret_cast<__m128i*>(_storage + sizeof...(Keys) - 2),
_mm_xor_si128(_mm_load_si128(reinterpret_cast<const __m128i*>(_storage + sizeof...(Keys) - 2)),
_mm_load_si128(reinterpret_cast<const __m128i*>(keys + sizeof...(Keys) - 2))));
#else
((Indices >= sizeof(_storage) / 16 ? static_cast<void>(0) : _mm_store_si128(
reinterpret_cast<__m128i*>(_storage) + Indices,
_mm_xor_si128(_mm_load_si128(reinterpret_cast<const __m128i*>(_storage) + Indices),
_mm_load_si128(reinterpret_cast<const __m128i*>(keys) + Indices)))), ...);
#endif
return (pointer)(_storage);
}
};
template<class L, std::size_t Size, std::size_t... Indices>
swG(L l, std::integral_constant<std::size_t, Size>, std::index_sequence<Indices...>) -> swG<
std::remove_const_t<std::remove_reference_t<decltype(l()[0])>>,
Size,
std::integer_sequence<std::uint64_t, CtKWt::WL<Indices>()...>,
std::index_sequence<Indices...>>;
} // namespace jm
#endif // include guard