Update crack Parallels Desktop 18.0.1 53056

This commit is contained in:
somebasj 2022-09-05 11:36:27 +08:00
parent 5de2f0e3b0
commit 0344bcdf3d
20 changed files with 543 additions and 1620 deletions

6
.gitmodules vendored
View File

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

View File

@ -1,19 +1,6 @@
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)
project(UIWarp)
add_library(${PROJECT_NAME} SHARED
src/main.cpp
@ -28,9 +15,12 @@ target_compile_options(${PROJECT_NAME} PRIVATE
-fvisibility-inlines-hidden
)
target_compile_options(${PROJECT_NAME} PRIVATE
-fpass-plugin=${CMAKE_SOURCE_DIR}/ollvm.dylib
)
# Add OLLVM plugin if exists
if (EXISTS ${CMAKE_SOURCE_DIR}/ollvm.dylib)
target_compile_options(${PROJECT_NAME} PRIVATE
-fpass-plugin=${CMAKE_SOURCE_DIR}/ollvm.dylib
)
endif()
target_link_libraries(${PROJECT_NAME} PRIVATE
"-framework Foundation"
@ -41,9 +31,4 @@ target_link_libraries(${PROJECT_NAME} PRIVATE
target_link_libraries(${PROJECT_NAME} PRIVATE
objc
dobby
)
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_SOURCE_DIR}/Dobby/include
)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 KiB

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

View File

@ -0,0 +1,96 @@
# patch prl_client_app
## 1. patch /usr/bin/codesign verify
find string xref to "/usr/bin/codesign"
### x86_64
```
__text:000000010093B8D0 55 push rbp
__text:000000010093B8D1 48 89 E5 mov rbp, rsp
__text:000000010093B8D4 41 57 push r15
__text:000000010093B8D6 41 56 push r14
__text:000000010093B8D8 41 55 push r13
__text:000000010093B8DA 41 54 push r12
__text:000000010093B8DC 53 push rbx
__text:000000010093B8DD 48 81 EC 38 04 00 00 sub rsp, 438h
__text:000000010093B8E4 4C 89 85 B8 FB FF FF mov [rbp+var_448], r8
__text:000000010093B8EB 48 89 8D B0 FB FF FF mov [rbp+var_450], rcx
__text:000000010093B8F2 48 89 95 A8 FB FF FF mov [rbp+var_458], rdx
__text:000000010093B8F9 41 89 F4 mov r12d, esi
__text:000000010093B8FC 48 89 FB mov rbx, rdi
__text:000000010093B8FF 48 8B 05 F2 91 B7 01 mov rax, cs:___stack_chk_guard_ptr
__text:000000010093B906 48 8B 00 mov rax, [rax]
__text:000000010093B909 48 89 45 D0 mov [rbp+var_30], rax
__text:000000010093B90D 48 8B 0D AC D9 C6 01 mov rcx, cs:off_1025A92C0 ; "4C6364ACXT"
__text:000000010093B914 48 8D 15 AC F2 18 00 lea rdx, aAnchorAppleGen_0 ; "=anchor apple generic and certificate l"...
__text:000000010093B91B 45 31 F6 xor r14d, r14d
__text:000000010093B91E 48 8D BD D0 FB FF FF lea rdi, [rbp+__str] ; __str
__text:000000010093B925 BE 00 04 00 00 mov esi, 400h ; __size
__text:000000010093B92A 31 C0 xor eax, eax
__text:000000010093B92C E8 11 A0 01 00 call _snprintf
__text:000000010093B931 48 C7 85 C0 FB FF FF 00+ mov [rbp+staticCode], 0
__text:000000010093B931 00 00 00
__text:000000010093B93C 48 8D 3D 72 F2 18 00 lea rdi, __file ; "/usr/bin/codesign"
__text:000000010093B943 BE 01 00 00 00 mov esi, 1 ; int
__text:000000010093B948 E8 73 9A 01 00 call _access
__text:000000010093B94D 85 C0 test eax, eax
__text:000000010093B94F 74 29 jz short loc_10093B97A
```
after
```
__text:000000010093B8D0 sub_10093B8D0 proc near ; CODE XREF: sub_10093B890+11↑j
__text:000000010093B8D0 ; sub_10093B8B0+C↑j
__text:000000010093B8D0 6A 01 push 1
__text:000000010093B8D2 58 pop rax
__text:000000010093B8D3 C3 retn
__text:000000010093B8D3 sub_10093B8D0 endp
```
### arm64
```
__text:0000000100977800 FA 67 BB A9 STP X26, X25, [SP,#-0x10+var_40]!
__text:0000000100977804 F8 5F 01 A9 STP X24, X23, [SP,#0x40+var_30]
__text:0000000100977808 F6 57 02 A9 STP X22, X21, [SP,#0x40+var_20]
__text:000000010097780C F4 4F 03 A9 STP X20, X19, [SP,#0x40+var_10]
__text:0000000100977810 FD 7B 04 A9 STP X29, X30, [SP,#0x40+var_s0]
__text:0000000100977814 FD 03 01 91 ADD X29, SP, #0x40
__text:0000000100977818 FF 43 11 D1 SUB SP, SP, #0x450
__text:000000010097781C F6 03 04 AA MOV X22, X4
__text:0000000100977820 F7 03 03 AA MOV X23, X3
__text:0000000100977824 F4 03 02 AA MOV X20, X2
__text:0000000100977828 F5 03 01 AA MOV X21, X1
__text:000000010097782C F3 03 00 AA MOV X19, X0
__text:0000000100977830 48 DB 00 B0 ADRP X8, #___stack_chk_guard_ptr@PAGE
__text:0000000100977834 08 69 45 F9 LDR X8, [X8,#___stack_chk_guard_ptr@PAGEOFF]
__text:0000000100977838 08 01 40 F9 LDR X8, [X8]
__text:000000010097783C A8 83 1B F8 STUR X8, [X29,#var_48]
__text:0000000100977840 E8 E2 00 D0 ADRP X8, #off_1025D5358@PAGE ; "4C6364ACXT"
__text:0000000100977844 08 AD 41 F9 LDR X8, [X8,#off_1025D5358@PAGEOFF] ; "4C6364ACXT"
__text:0000000100977848 E8 03 00 F9 STR X8, [SP,#0x490+var_490]
__text:000000010097784C C2 D9 00 F0 42 4C 3C 91 ADRL X2, aAnchorAppleGen_0 ; "=anchor apple generic and certificate l"...
__text:0000000100977854 E0 23 01 91 ADD X0, SP, #0x490+__str ; __str
__text:0000000100977858 01 80 80 52 MOV W1, #0x400 ; __size
__text:000000010097785C E1 7D 00 94 BL _snprintf
__text:0000000100977860 FF 1F 00 F9 STR XZR, [SP,#0x490+staticCode]
__text:0000000100977864 C0 D9 00 F0 00 04 3C 91 ADRL X0, aUsrBinCodesign ; "/usr/bin/codesign"
__text:000000010097786C 21 00 80 52 MOV W1, #1 ; int
__text:0000000100977870 1B 7B 00 94 BL _access
__text:0000000100977874 E0 01 00 34 CBZ W0, loc_1009778B0
```
after
```
__text:0000000100977800 sub_100977800 ; CODE XREF: sub_1009777DC+10↑j
__text:0000000100977800 ; sub_1009777F0+C↑j
__text:0000000100977800 20 00 80 D2 MOV X0, #1
__text:0000000100977804 C0 03 5F D6 RET
__text:0000000100977804 ; End of function sub_100977800
```

Binary file not shown.

View File

@ -0,0 +1,202 @@
# patch prl_disp_app
## 1. patch /usr/bin/codesign verify
find string xref to "/usr/bin/codesign"
### x86_64
```
__text:00000001007C9280 55 push rbp
__text:00000001007C9281 48 89 E5 mov rbp, rsp
__text:00000001007C9284 41 57 push r15
__text:00000001007C9286 41 56 push r14
__text:00000001007C9288 41 55 push r13
__text:00000001007C928A 41 54 push r12
__text:00000001007C928C 53 push rbx
__text:00000001007C928D 48 81 EC 38 04 00 00 sub rsp, 438h
__text:00000001007C9294 4C 89 85 B8 FB FF FF mov [rbp+var_448], r8
__text:00000001007C929B 48 89 8D B0 FB FF FF mov [rbp+var_450], rcx
__text:00000001007C92A2 48 89 95 A8 FB FF FF mov [rbp+var_458], rdx
__text:00000001007C92A9 41 89 F4 mov r12d, esi
__text:00000001007C92AC 48 89 FB mov rbx, rdi
__text:00000001007C92AF 48 8B 05 7A 70 1C 00 mov rax, cs:___stack_chk_guard_ptr
__text:00000001007C92B6 48 8B 00 mov rax, [rax]
__text:00000001007C92B9 48 89 45 D0 mov [rbp+var_30], rax
__text:00000001007C92BD 48 8B 0D B4 83 27 00 mov rcx, cs:off_100A41678 ; "4C6364ACXT"
__text:00000001007C92C4 48 8D 15 C4 2A 15 00 lea rdx, aAnchorAppleGen_0 ; "=anchor apple generic and certificate l"...
__text:00000001007C92CB 45 31 F6 xor r14d, r14d
__text:00000001007C92CE 48 8D BD D0 FB FF FF lea rdi, [rbp+__str] ; __str
__text:00000001007C92D5 BE 00 04 00 00 mov esi, 400h ; __size
__text:00000001007C92DA 31 C0 xor eax, eax
__text:00000001007C92DC E8 73 CA 01 00 call _snprintf
__text:00000001007C92E1 48 C7 85 C0 FB FF FF 00+ mov [rbp+staticCode], 0
__text:00000001007C92E1 00 00 00
__text:00000001007C92EC 48 8D 3D 8A 2A 15 00 lea rdi, __file ; "/usr/bin/codesign"
__text:00000001007C92F3 BE 01 00 00 00 mov esi, 1 ; int
__text:00000001007C92F8 E8 3F C4 01 00 call _access
__text:00000001007C92FD 85 C0 test eax, eax
__text:00000001007C92FF 74 29 jz short loc_1007C932A
```
after
```
__text:00000001007C9280 sub_1007C9280 proc near ; CODE XREF: sub_100175930+28F↑p
__text:00000001007C9280 6A 01 push 1
__text:00000001007C9282 58 pop rax
__text:00000001007C9283 C3 retn
__text:00000001007C9283 sub_1007C9280 endp
```
### arm64
```
__text:00000001007B3A14 FA 67 BB A9 STP X26, X25, [SP,#-0x10+var_40]!
__text:00000001007B3A18 F8 5F 01 A9 STP X24, X23, [SP,#0x40+var_30]
__text:00000001007B3A1C F6 57 02 A9 STP X22, X21, [SP,#0x40+var_20]
__text:00000001007B3A20 F4 4F 03 A9 STP X20, X19, [SP,#0x40+var_10]
__text:00000001007B3A24 FD 7B 04 A9 STP X29, X30, [SP,#0x40+var_s0]
__text:00000001007B3A28 FD 03 01 91 ADD X29, SP, #0x40
__text:00000001007B3A2C FF 43 11 D1 SUB SP, SP, #0x450
__text:00000001007B3A30 F6 03 04 AA MOV X22, X4
__text:00000001007B3A34 F7 03 03 AA MOV X23, X3
__text:00000001007B3A38 F4 03 02 AA MOV X20, X2
__text:00000001007B3A3C F5 03 01 AA MOV X21, X1
__text:00000001007B3A40 F3 03 00 AA MOV X19, X0
__text:00000001007B3A44 C8 0D 00 B0 ADRP X8, #___stack_chk_guard_ptr@PAGE
__text:00000001007B3A48 08 6D 41 F9 LDR X8, [X8,#___stack_chk_guard_ptr@PAGEOFF]
__text:00000001007B3A4C 08 01 40 F9 LDR X8, [X8]
__text:00000001007B3A50 A8 83 1B F8 STUR X8, [X29,#var_48]
__text:00000001007B3A54 48 13 00 D0 ADRP X8, #off_100A1DB18@PAGE ; "4C6364ACXT"
__text:00000001007B3A58 08 8D 45 F9 LDR X8, [X8,#off_100A1DB18@PAGEOFF] ; "4C6364ACXT"
__text:00000001007B3A5C E8 03 00 F9 STR X8, [SP,#0x490+var_490]
__text:00000001007B3A60 C2 0C 00 90 42 18 34 91 ADRL X2, aAnchorAppleGen_0 ; "=anchor apple generic and certificate l"...
__text:00000001007B3A68 E0 23 01 91 ADD X0, SP, #0x490+__str ; __str
__text:00000001007B3A6C 01 80 80 52 MOV W1, #0x400 ; __size
__text:00000001007B3A70 AA 76 00 94 BL _snprintf
__text:00000001007B3A74 FF 1F 00 F9 STR XZR, [SP,#0x490+staticCode]
__text:00000001007B3A78 C0 0C 00 90 00 D0 33 91 ADRL X0, aUsrBinCodesign ; "/usr/bin/codesign"
__text:00000001007B3A80 21 00 80 52 MOV W1, #1 ; int
__text:00000001007B3A84 93 73 00 94 BL _access
__text:00000001007B3A88 E0 01 00 34 CBZ W0, loc_1007B3AC4
__text:00000001007B3A8C
```
after
```
__text:00000001007B3A14 sub_1007B3A14 ; CODE XREF: sub_10018297C+2D4↑p
__text:00000001007B3A14 20 00 80 D2 MOV X0, #1
__text:00000001007B3A18 C0 03 5F D6 RET
__text:00000001007B3A18 ; End of function sub_1007B3A14
```
## 2. patch Signature::SignCheckerImpl
### 2.1 find vtable
x86_64
```
__const:00000001009B2A70 ; `vtable for'Signature::SignCheckerImpl
__const:00000001009B2A70 00 00 00 00 00 00 00 00 _ZTVN9Signature15SignCheckerImplE dq 0 ; DATA XREF: sub_100349A00+28↑o
__const:00000001009B2A70 ; offset to this
__const:00000001009B2A78 A8 2A 9B 00 01 00 00 00 dq offset _ZTIN9Signature15SignCheckerImplE ; `typeinfo for'Signature::SignCheckerImpl
__const:00000001009B2A80 00 0B 5B 00 01 00 00 00 dq offset sub_1005B0B00
__const:00000001009B2A88 10 0B 5B 00 01 00 00 00 dq offset sub_1005B0B10
__const:00000001009B2A90 80 07 5B 00 01 00 00 00 dq offset sub_1005B0780
```
arm64
```
```
### 2.2 patch function `sub_1005B0780`
x86_64
```
__text:00000001005B0780 55 push rbp
__text:00000001005B0781 48 89 E5 mov rbp, rsp
__text:00000001005B0784 41 57 push r15
__text:00000001005B0786 41 56 push r14
__text:00000001005B0788 41 54 push r12
__text:00000001005B078A 53 push rbx
__text:00000001005B078B 48 81 EC A0 00 00 00 sub rsp, 0A0h
__text:00000001005B0792 49 89 CE mov r14, rcx
__text:00000001005B0795 49 89 D7 mov r15, rdx
__text:00000001005B0798 49 89 F4 mov r12, rsi
__text:00000001005B079B BF D0 0A 00 00 mov edi, 0AD0h ; unsigned __int64
__text:00000001005B07A0 E8 D7 4E 23 00 call __Znwm ; operator new(ulong)
__text:00000001005B07A5 48 89 C3 mov rbx, rax
__text:00000001005B07A8 48 89 45 A0 mov [rbp+var_60], rax
__text:00000001005B07AC 0F 28 05 DD 8F 38 00 movaps xmm0, cs:xmmword_100939790
__text:00000001005B07B3 0F 29 45 90 movaps [rbp+var_70], xmm0
__text:00000001005B07B7 48 8D 35 58 8F 31 00 lea rsi, aBeginCertifica ; "-----BEGIN CERTIFICATE-----\nMIIHzTCCBb"...
__text:00000001005B07BE BA CC 0A 00 00 mov edx, 0ACCh ; __n
__text:00000001005B07C3 48 89 C7 mov rdi, rax ; __dst
__text:00000001005B07C6 E8 3D 53 23 00 call _memcpy
__text:00000001005B07CB C6 83 CC 0A 00 00 00 mov byte ptr [rbx+0ACCh], 0
__text:00000001005B07D2 48 8D BD 48 FF FF FF lea rdi, [rbp+var_B8]
__text:00000001005B07D9 48 8D 75 90 lea rsi, [rbp+var_70]
__text:00000001005B07DD E8 CE 07 00 00 call sub_1005B0FB0
__text:00000001005B07E2 F6 45 90 01 test byte ptr [rbp+var_70], 1
__text:00000001005B07E6 74 09 jz short loc_1005B07F1
__text:00000001005B07E8 48 8B 7D A0 mov rdi, [rbp+var_60] ; void *
__text:00000001005B07EC E8 61 4E 23 00 call __ZdlPv ; operator delete(void *)
__text:00000001005B07F1
```
after
```
__text:00000001005B0780 sub_1005B0780 proc near ; DATA XREF: __const:00000001009B2A90↓o
__text:00000001005B0780 6A 01 push 1
__text:00000001005B0782 58 pop rax
__text:00000001005B0783 C3 retn
__text:00000001005B0783 sub_1005B0780 endp
```
arm64
```
__text:00000001005DE584 FF 03 03 D1 SUB SP, SP, #0xC0
__text:00000001005DE588 F6 57 09 A9 STP X22, X21, [SP,#0xB0+var_20]
__text:00000001005DE58C F4 4F 0A A9 STP X20, X19, [SP,#0xB0+var_10]
__text:00000001005DE590 FD 7B 0B A9 STP X29, X30, [SP,#0xB0+var_s0]
__text:00000001005DE594 FD C3 02 91 ADD X29, SP, #0xB0
__text:00000001005DE598 F3 03 03 AA MOV X19, X3
__text:00000001005DE59C F4 03 02 AA MOV X20, X2
__text:00000001005DE5A0 F5 03 01 AA MOV X21, X1
__text:00000001005DE5A4 00 5A 81 52 MOV W0, #0xAD0 ; unsigned __int64
__text:00000001005DE5A8 70 C8 07 94 BL __Znwm ; operator new(ulong)
__text:00000001005DE5AC F6 03 00 AA MOV X22, X0
__text:00000001005DE5B0 E0 2B 00 F9 STR X0, [SP,#0xB0+var_60]
__text:00000001005DE5B4 E8 10 00 B0 ADRP X8, #xmmword_1007FB2D0@PAGE
__text:00000001005DE5B8 00 B5 C0 3D LDR Q0, [X8,#xmmword_1007FB2D0@PAGEOFF]
__text:00000001005DE5BC E0 83 85 3C STUR Q0, [SP,#0xB0+var_58]
__text:00000001005DE5C0 C1 18 00 F0 21 84 25 91 ADRL X1, aBeginCertifica ; "-----BEGIN CERTIFICATE-----\nMIIHzTCCBb"...
__text:00000001005DE5C8 82 59 81 52 MOV W2, #0xACC ; __n
__text:00000001005DE5CC A7 CA 07 94 BL _memcpy
__text:00000001005DE5D0 DF 32 2B 39 STRB WZR, [X22,#0xACC]
__text:00000001005DE5D4 A0 23 01 D1 SUB X0, X29, #-var_48
__text:00000001005DE5D8 E1 43 01 91 ADD X1, SP, #0xB0+var_60
__text:00000001005DE5DC 00 02 00 94 BL j___ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_ ; std::string::basic_string(std::string const&)
__text:00000001005DE5E0 E8 9F C1 39 LDRSB W8, [SP,#0xB0+var_58+0xF]
__text:00000001005DE5E4 68 00 F8 36 TBZ W8, #0x1F, loc_1005DE5F0
__text:00000001005DE5E8 E0 2B 40 F9 LDR X0, [SP,#0xB0+var_60] ; void *
__text:00000001005DE5EC 4A C8 07 94 BL __ZdlPv ; operator delete(void *)
__text:00000001005DE5F0
```
after
```
__text:00000001005DE584 sub_1005DE584 ; DATA XREF: __const:0000000100988540↓o
__text:00000001005DE584 20 00 80 D2 MOV X0, #1
__text:00000001005DE588 C0 03 5F D6 RET
__text:00000001005DE588 ; End of function sub_1005DE584
```

1
deps/Dobby vendored

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

View File

@ -0,0 +1,33 @@
<?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.application-identifier</key>
<string>4C6364ACXT.com.parallels.desktop.console</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>webcredentials:my.parallels.com</string>
<string>webcredentials:my.myparallels.com</string>
</array>
<key>com.apple.developer.team-identifier</key>
<string>4C6364ACXT</string>
<key>com.apple.security.application-groups</key>
<array>
<string>4C6364ACXT.com.parallels.Desktop</string>
</array>
<key>keychain-access-groups</key>
<array>
<string>4C6364ACXT.com.parallels.desktop.passwords</string>
</array>
<key>com.apple.security.personal-information.addressbook</key>
<true/>
-->
<key>com.apple.security.automation.apple-events</key>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,14 @@
<?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.app-sandbox</key>
<false/>
<key>com.apple.security.virtualization</key>
<true/>
<!--
<key>com.apple.vm.networking</key>
<true/>
-->
</dict>
</plist>

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>

View File

@ -0,0 +1,20 @@
<?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.application-identifier</key>
<string>4C6364ACXT.com.parallels.desktop.console</string>
<key>com.apple.developer.team-identifier</key>
<string>4C6364ACXT</string>
<key>com.apple.vm.networking</key>
<true/>
-->
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.hypervisor</key>
<true/>
<key>com.apple.vm.device-access</key>
<true/>
</dict>
</plist>

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.cs.allow-unsigned-executable-memory</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,7 @@
#!/bin/sh
codesign -d --entitlements - --xml "/Volumes/Parallels Desktop 18/Parallels Desktop.app/Contents/MacOS/Parallels Mac VM.app" 2>/dev/null | plutil -convert xml1 -o - - > ParallelsMacVM.entitlements
codesign -d --entitlements - --xml "/Volumes/Parallels Desktop 18/Parallels Desktop.app/Contents/MacOS/Parallels Service.app" 2>/dev/null | plutil -convert xml1 -o - - > ParallelsService.entitlements
codesign -d --entitlements - --xml "/Volumes/Parallels Desktop 18/Parallels Desktop.app/Contents/MacOS/Parallels VM 10.14.app" 2>/dev/null | plutil -convert xml1 -o - - > ParallelsVM1014.entitlements
codesign -d --entitlements - --xml "/Volumes/Parallels Desktop 18/Parallels Desktop.app/Contents/MacOS/Parallels VM.app" 2>/dev/null | plutil -convert xml1 -o - - > ParallelsVM.entitlements
codesign -d --entitlements - --xml "/Volumes/Parallels Desktop 18/Parallels Desktop.app" 2>/dev/null | plutil -convert xml1 -o - - > ParallelsDesktop.entitlements

Binary file not shown.

View File

@ -1,10 +1,28 @@
# Parallels Desktop Crack
Crack for Parallels Desktop 17.1.4 51567 & Toolbox 5.5.1 4410.
Crack for Parallels Desktop.
Only work for Intel macOS.
[x] Support Intel & Apple Silicon (M1)
[ ] Network problem
[ ] USB problem
# Network & USB problem
Parallels Desktop new version use Apple's hypervisor framework vmnet API need a paid Developer ID and request to Apple enable vmnet access permission.
So i don't know how to bypass it.
Here have a temp solution:
```
killall -9 prl_client_app
sudo sed -i '' 's|<UseKextless>.*</UseKextless>|<UseKextless>0</UseKextless>|' /Library/Preferences/Parallels/network.desktop.xml
sudo sed -i '' 's|<Usb>.*</Usb>|<Usb>1</Usb>|' /Library/Preferences/Parallels/dispatcher.desktop.xml
```
After this, network will work, USB only work with storage device.
I write some arm64 version patch code but i don't have arm64 macOS test, you can continue this work if you interested.
# Build
@ -14,24 +32,22 @@ git submodule update --init --recursive
./scripts/build.bat
```
# Install & Test
```
sudo ./scripts/install.sh
```
# Publish DMG
```
brew install create-dmg
./scripts/publish.sh
```
You can found packaged dmg file in `publish` folder.
```
ParallelsDesktop-17.1.4-51567_Crack.dmg
ParallelsToolbox-5.5.1-4410_Crack.dmg
```
Good Luck!

View File

@ -19,7 +19,6 @@ 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 \
cmake --build "${ROOT_PATH}/build" --target UIWarp -j8 \
&& echo "[*] Build Success"

View File

@ -4,12 +4,17 @@ CUR_PATH=$(cd "$(dirname $(readlink -f "$0"))" && pwd)
ROOT_PATH=$(cd "${CUR_PATH}/../" && pwd)
PTFM_APP_DIR="/Applications/Parallels Toolbox.app"
PDFM_APP_DIR="/Applications/Parallels Desktop.app"
CRACK_LIB="${ROOT_PATH}/build/libConfigurer64.dylib"
# CODESIGN_CERT=B8474E27C322DFB3D4A0168127EB02DB877C3F81
CRACK_LIB="${ROOT_PATH}/build/libUIWarp.dylib"
CRACK_LIB_DST_NAME="libUIWarp"
CODESIGN_CERT=-
if [ -n "$(security find-identity -v -p codesigning | grep B8474E27C322DFB3D4A0168127EB02DB877C3F81)" ]; then
CODESIGN_CERT=B8474E27C322DFB3D4A0168127EB02DB877C3F81
fi
function sign_cmd() {
codesign -f -s ${CODESIGN_CERT} --all-architectures --deep "$1"
codesign -f -s ${CODESIGN_CERT} -o runtime --all-architectures --deep "$@"
}
function kill_ptfm_app() {
@ -27,8 +32,8 @@ function apply_ptfm_crack() {
/usr/local/opt/llvm/bin/llvm-strip -s "${CRACK_LIB}" > /dev/null
fi
RPATH="@rpath/libConfigurer64.dylib"
DST="${PTFM_APP_DIR}/Contents/Frameworks/libConfigurer64.dylib"
RPATH="@rpath/${CRACK_LIB_DST_NAME}.dylib"
DST="${PTFM_APP_DIR}/Contents/Frameworks/${CRACK_LIB_DST_NAME}.dylib"
LOADER="${PTFM_APP_DIR}/Contents/Frameworks/libLogging.dylib"
if ! grep -q "${RPATH}" "${LOADER}"; then
@ -47,8 +52,8 @@ function apply_pdfm_crack() {
/usr/local/opt/llvm/bin/llvm-strip -s "${CRACK_LIB}" > /dev/null
fi
RPATH="@rpath/libConfigurer64.dylib"
DST="${PDFM_APP_DIR}/Contents/Frameworks/libConfigurer64.dylib"
RPATH="@rpath/${CRACK_LIB_DST_NAME}.dylib"
DST="${PDFM_APP_DIR}/Contents/Frameworks/${CRACK_LIB_DST_NAME}.dylib"
LOADER="${PDFM_APP_DIR}/Contents/Frameworks/QtXml.framework/Versions/5/QtXml"
if ! grep -q "${RPATH}" "${LOADER}"; then
@ -121,14 +126,23 @@ function sign_ptfm() {
function sign_pdfm() {
echo "[*] Sign Parallels Desktop App"
sign_cmd "${PDFM_APP_DIR}/Contents/Library/QuickLook/ExeQL.qlgenerator"
sign_cmd "${PDFM_APP_DIR}/Contents/Library/QuickLook/ParallelsQL.qlgenerator"
sign_cmd "${PDFM_APP_DIR}/Contents/Resources/launchd_wrapper"
sign_cmd "${PDFM_APP_DIR}/Contents/Resources/libprl_shared_apps.dylib"
sign_cmd "${PDFM_APP_DIR}/Contents/Resources/lua/ssl.so"
sign_cmd "${PDFM_APP_DIR}/Contents/Resources/lua/mime/core.so"
sign_cmd "${PDFM_APP_DIR}/Contents/Resources/lua/socket/core.so"
sign_cmd "${PDFM_APP_DIR}/Contents/Resources/lua/socket/serial.so"
sign_cmd "${PDFM_APP_DIR}/Contents/Resources/lua/socket/unix.so"
sign_cmd "${PDFM_APP_DIR}/Contents/Applications/Parallels Link.app"
sign_cmd "${PDFM_APP_DIR}/Contents/Applications/Parallels Mounter.app"
sign_cmd "${PDFM_APP_DIR}/Contents/Applications/Parallels Technical Data Reporter.app"
sign_cmd "${PDFM_APP_DIR}/Contents/MacOS/Parallels Mac VM.app"
sign_cmd "${PDFM_APP_DIR}/Contents/MacOS/Parallels Service.app"
sign_cmd "${PDFM_APP_DIR}/Contents/MacOS/Parallels VM 10.14.app"
sign_cmd "${PDFM_APP_DIR}/Contents/MacOS/Parallels VM.app"
sign_cmd "${PDFM_APP_DIR}"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsMacVM.entitlements" "${PDFM_APP_DIR}/Contents/MacOS/Parallels Mac VM.app"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsService.entitlements" "${PDFM_APP_DIR}/Contents/MacOS/Parallels Service.app"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsVM1014.entitlements" "${PDFM_APP_DIR}/Contents/MacOS/Parallels VM 10.14.app"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsVM.entitlements" "${PDFM_APP_DIR}/Contents/MacOS/Parallels VM.app"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsDesktop.entitlements" "${PDFM_APP_DIR}"
}
if [ -d "${PTFM_APP_DIR}" ]; then

View File

@ -6,13 +6,13 @@ TEMP_PATH="${ROOT_PATH}/tmp"
PUBLISH_PATH="${ROOT_PATH}/publish"
PTFM_VERSION="5.5.1-4410"
PDFM_VERSION="17.1.4-51567"
PDFM_VERSION="18.0.1-53056"
PTFM_SHA256SUM="412bddebac28e229c7973dad6d702c67d1b42195b99b009af26ef036f5631349"
PDFM_SHA256SUM="8232f140e4c5b95821bf5063fb37db356f7bab520ddabbab4a73d08b5de0cd10"
PDFM_SHA256SUM="8a021158b29b814f2942bb0afa5ca33fc6a87729578d1ad194e95a3f929b1e6f"
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"
PDFM_DMG_DOWNLOAD_URL="https://download.parallels.com/desktop/v18/${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"
@ -20,16 +20,20 @@ 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"
if [ -n "$(security find-identity -v -p codesigning | grep B8474E27C322DFB3D4A0168127EB02DB877C3F81)" ]; then
CODESIGN_CERT=B8474E27C322DFB3D4A0168127EB02DB877C3F81
fi
CRACK_LIB_DST_NAME="libUIWarp"
CRACK_LIB="${ROOT_PATH}/build/${CRACK_LIB_DST_NAME}.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"
codesign -f -s ${CODESIGN_CERT} -o runtime --all-architectures --deep "$@"
}
function ensure_download_ptfm_dmg() {
@ -90,9 +94,9 @@ function copy_pdfm_files() {
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"
cp -R -X "/Volumes/Parallels Desktop 18/Install.app" "${PDFM_TMP_DIR}/" > /dev/null
cp -R -X "/Volumes/Parallels Desktop 18/Parallels Desktop.app" "${PDFM_TMP_DIR}/" > /dev/null
hdiutil detach "/Volumes/Parallels Desktop 18"
rm -f "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/embedded.provisionprofile" > /dev/null
chflags -R 0 "${PDFM_TMP_DIR}" > /dev/null
@ -106,8 +110,8 @@ function apply_ptfm_crack() {
/usr/local/opt/llvm/bin/llvm-strip -s "${CRACK_LIB}" > /dev/null
fi
RPATH="@rpath/libConfigurer64.dylib"
DST="${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Frameworks/libConfigurer64.dylib"
RPATH="@rpath/${CRACK_LIB_DST_NAME}.dylib"
DST="${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Frameworks/${CRACK_LIB_DST_NAME}.dylib"
LOADER="${PTFM_TMP_DIR}/Install Parallels Toolbox.app/Contents/Frameworks/libLogging.dylib"
"${CUR_PATH}/insert_dylib" --inplace --overwrite --no-strip-codesig --all-yes \
@ -123,14 +127,22 @@ function apply_pdfm_crack() {
/usr/local/opt/llvm/bin/llvm-strip -s "${CRACK_LIB}" > /dev/null
fi
RPATH="@rpath/libConfigurer64.dylib"
DST="${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Frameworks/libConfigurer64.dylib"
RPATH="@rpath/${CRACK_LIB_DST_NAME}.dylib"
DST="${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Frameworks/${CRACK_LIB_DST_NAME}.dylib"
LOADER="${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Frameworks/QtXml.framework/Versions/5/QtXml"
"${CUR_PATH}/insert_dylib" --inplace --overwrite --no-strip-codesig --all-yes \
"${RPATH}" "${LOADER}" > /dev/null
cp -f -X "${CRACK_LIB}" "${DST}" > /dev/null
SRC="${ROOT_PATH}/crack/pdfm-18.0.1.53056/prl_client_app"
DST="${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/prl_client_app"
cp -f -X "${SRC}" "${DST}" > /dev/null
SRC="${ROOT_PATH}/crack/pdfm-18.0.1.53056/prl_disp_service"
DST="${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels Service.app/Contents/MacOS/prl_disp_service"
cp -f -X "${SRC}" "${DST}" > /dev/null
}
function sign_ptfm() {
@ -195,15 +207,23 @@ function sign_ptfm() {
function sign_pdfm() {
echo "[*] Sign Parallels Desktop App"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Library/QuickLook/ExeQL.qlgenerator"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Library/QuickLook/ParallelsQL.qlgenerator"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Resources/launchd_wrapper"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Resources/libprl_shared_apps.dylib"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Resources/lua/ssl.so"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Resources/lua/mime/core.so"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Resources/lua/socket/core.so"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Resources/lua/socket/serial.so"
sign_cmd "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/Resources/lua/socket/unix.so"
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"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsMacVM.entitlements" "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels Mac VM.app"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsService.entitlements" "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels Service.app"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsVM1014.entitlements" "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels VM 10.14.app"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsVM.entitlements" "${PDFM_TMP_DIR}/Parallels Desktop.app/Contents/MacOS/Parallels VM.app"
sign_cmd --entitlements "${ROOT_PATH}/entitlements/ParallelsDesktop/ParallelsDesktop.entitlements" "${PDFM_TMP_DIR}/Parallels Desktop.app"
}
function set_pdfm_app_hide() {
@ -240,7 +260,7 @@ function create_pdfm_dmg() {
fi
create-dmg \
--volname "Parallels Desktop 17" \
--volname "Parallels Desktop 18" \
--volicon "${ROOT_PATH}/assets/PDFM.VolumeIcon.icns" \
--background "${ROOT_PATH}/assets/PDFM.background.png" \
--window-pos 0 0 \
@ -269,5 +289,5 @@ function publish_pdfm_crack_dmg() {
create_pdfm_dmg
}
publish_ptfm_crack_dmg
# publish_ptfm_crack_dmg
publish_pdfm_crack_dmg

File diff suppressed because one or more lines are too long