Update crack CleanMyMac X for Mac 4.12.1 (41201.0.2211091011)

This commit is contained in:
somebasj 2022-11-14 11:13:35 +08:00
parent 00fb216722
commit 3e31713131
11 changed files with 552 additions and 0 deletions

BIN
assets/CMMX.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
crack/CMMFoundation Executable file

Binary file not shown.

BIN
crack/CleanMyMac X Executable file

Binary file not shown.

169
crack/CleanMyMacX.md Normal file
View File

@ -0,0 +1,169 @@
## patch activated
### 1. find -[CMMacPawAccountActivationManager isAppActivated]
#### x86_64
```
__text:000000010003F067
__text:000000010003F067 ; char __cdecl -[CMMacPawAccountActivationManager isAppActivated](CMMacPawAccountActivationManager *self, SEL)
__text:000000010003F067 __CMMacPawAccountActivationManager_isAppActivated_ proc near
__text:000000010003F067 ; DATA XREF: __objc_const:000000010067C6B0↓o
__text:000000010003F067
__text:000000010003F067 var_8 = byte ptr -8
__text:000000010003F067
__text:000000010003F067 55 push rbp
__text:000000010003F068 48 89 E5 mov rbp, rsp
__text:000000010003F06B 48 83 EC 10 sub rsp, 10h
__text:000000010003F06F 48 8D 7D F8 lea rdi, [rbp+var_8]
__text:000000010003F073 48 C7 07 9C FF FF FF mov qword ptr [rdi], 0FFFFFFFFFFFFFF9Ch
__text:000000010003F07A E8 71 66 38 00 call sub_1003C56F0
__text:000000010003F07F 84 C0 test al, al
__text:000000010003F081 75 13 jnz short loc_10003F096
__text:000000010003F083 BF 01 00 00 00 mov edi, 1
__text:000000010003F088 31 F6 xor esi, esi
__text:000000010003F08A E8 04 61 FD FF call sub_100015193
__text:000000010003F08F 48 83 F8 09 cmp rax, 9
__text:000000010003F093 0F 94 C0 setz al
__text:000000010003F096
__text:000000010003F096 loc_10003F096: ; CODE XREF: -[CMMacPawAccountActivationManager isAppActivated]+1A↑j
__text:000000010003F096 0F BE C0 movsx eax, al
__text:000000010003F099 48 83 C4 10 add rsp, 10h
__text:000000010003F09D 5D pop rbp
__text:000000010003F09E C3 retn
__text:000000010003F09E __CMMacPawAccountActivationManager_isAppActivated_ endp
__text:000000010003F09E
```
```
__text:00000001003C56F0 sub_1003C56F0 proc near ; CODE XREF: sub_10002B273+28↑p
__text:00000001003C56F0 ; +[CMLinkBuilder standardURLTrackingParametersDictionary]+21F↑p ...
__text:00000001003C56F0
__text:00000001003C56F0 55 push rbp
__text:00000001003C56F1 48 89 E5 mov rbp, rsp
__text:00000001003C56F4 48 81 EC A0 06 00 00 sub rsp, 6A0h
__text:00000001003C56FB 48 8B 05 16 91 26 00 mov rax, cs:___stack_chk_guard_ptr
__text:00000001003C5702 48 8B 00 mov rax, [rax]
__text:00000001003C5705 48 89 45 F8 mov [rbp+var_8], rax
__text:00000001003C5709 48 89 BD 18 FD FF FF mov [rbp+var_2E8], rdi
__text:00000001003C5710 C6 85 17 FD FF FF 00 mov [rbp+var_2E9], 0
__text:00000001003C5717 E8 FE E2 15 00 call _objc_autoreleasePoolPush
__text:00000001003C571C 48 8B 0D ED 8D 26 00 mov rcx, cs:_NSApp_ptr
__text:00000001003C5723 48 C7 85 08 FD FF FF 00 00 00 00 mov [rbp+var_2F8], 0
__text:00000001003C572E 48 8B 95 08 FD FF FF mov rdx, [rbp+var_2F8]
__text:00000001003C5735 48 89 95 00 FD FF FF mov [rbp+var_300], rdx
__text:00000001003C573C 48 8D 95 00 FD FF FF lea rdx, [rbp+var_300]
__text:00000001003C5743 48 89 95 60 FD FF FF mov [rbp+var_2A0], rdx
__text:00000001003C574A 48 83 39 00 cmp qword ptr [rcx], 0
__text:00000001003C574E 48 89 85 E8 FC FF FF mov [rbp+context], rax
__text:00000001003C5755 0F 84 39 00 00 00 jz loc_1003C5794
__text:00000001003C575B 48 8B 05 1E 07 41 00 mov rax, cs:qword_1007D5E80
__text:00000001003C5762 48 8B 0D A7 8D 26 00 mov rcx, cs:_NSApp_ptr
__text:00000001003C5769 48 8B 39 mov rdi, [rcx]
__text:00000001003C576C 48 8D 35 B5 07 41 00 lea rsi, unk_1007D5F28
__text:00000001003C5773 FF D0 call rax ; qword_1007D5E80
__text:00000001003C5775 48 89 85 E0 FC FF FF mov [rbp+var_320], rax
__text:00000001003C577C E9 00 00 00 00 jmp $+5
```
opcode
```
55 48 89 E5 48 81 EC A0 06 00 00 48 8B 05 16 91
26 00 48 8B 00 48 89 45 F8 48 89 BD 18 FD FF FF
C6 85 17 FD FF FF 00 E8 FE E2 15 00 48 8B 0D ED
8D 26 00 48 C7 85 08 FD FF FF 00 00 00 00 48 8B
95 08 FD FF FF 48 89 95 00 FD FF FF 48 8D 95 00
FD FF FF 48 89 95 60 FD FF FF 48 83 39 00 48 89
85 E8 FC FF FF 0F 84 39 00 00 00 48 8B 05 1E 07
```
patch
```
6A 01 58 C3
```
#### arm64
```
__text:000000010003FC30 ; bool __cdecl -[CMMacPawAccountActivationManager isAppActivated](CMMacPawAccountActivationManager *self, SEL)
__text:000000010003FC30 __CMMacPawAccountActivationManager_isAppActivated_
__text:000000010003FC30 ; DATA XREF: __objc_methlist:00000001004D3FD4↓o
__text:000000010003FC30
__text:000000010003FC30 var_8 = -8
__text:000000010003FC30 var_s0 = 0
__text:000000010003FC30
__text:000000010003FC30 FF 83 00 D1 SUB SP, SP, #0x20 ; __int64
__text:000000010003FC34 FD 7B 01 A9 STP X29, X30, [SP,#0x10+var_s0] ; __int64
__text:000000010003FC38 FD 43 00 91 ADD X29, SP, #0x10
__text:000000010003FC3C 68 0C 80 92 MOV X8, #0xFFFFFFFFFFFFFF9C
__text:000000010003FC40 E8 07 00 F9 STR X8, [SP,#0x10+var_8] ; __int64
__text:000000010003FC44 E0 23 00 91 ADD X0, SP, #0x10+var_8 ; int
__text:000000010003FC48 2C CD 0C 94 BL sub_1003730F8
__text:000000010003FC4C 60 00 00 36 TBZ W0, #0, loc_10003FC58
__text:000000010003FC50 20 00 80 52 MOV W0, #1
__text:000000010003FC54 06 00 00 14 B loc_10003FC6C
__text:000000010003FC58 ; ---------------------------------------------------------------------------
__text:000000010003FC58
__text:000000010003FC58 loc_10003FC58 ; CODE XREF: -[CMMacPawAccountActivationManager isAppActivated]+1C↑j
__text:000000010003FC58 20 00 80 52 MOV W0, #1
__text:000000010003FC5C 01 00 80 D2 MOV X1, #0
__text:000000010003FC60 40 64 FF 97 BL sub_100018D60
__text:000000010003FC64 1F 24 00 F1 CMP X0, #9
__text:000000010003FC68 E0 17 9F 1A CSET W0, EQ
__text:000000010003FC6C
__text:000000010003FC6C loc_10003FC6C ; CODE XREF: -[CMMacPawAccountActivationManager isAppActivated]+24↑j
__text:000000010003FC6C FD 7B 41 A9 LDP X29, X30, [SP,#0x10+var_s0]
__text:000000010003FC70 FF 83 00 91 ADD SP, SP, #0x20 ; ' '
__text:000000010003FC74 C0 03 5F D6 RET
__text:000000010003FC74 ; End of function -[CMMacPawAccountActivationManager isAppActivated]
__text:000000010003FC74
```
```
__text:00000001003730F8 sub_1003730F8 ; CODE XREF: sub_10002BCEC+28↑p
__text:00000001003730F8 ; +[CMLinkBuilder standardURLTrackingParametersDictionary]+210↑p ...
__text:00000001003730F8
__text:00000001003730F8 FC 6F BE A9 STP X28, X27, [SP,#-0x10+var_10]!
__text:00000001003730FC FD 7B 01 A9 STP X29, X30, [SP,#0x10+var_s0]
__text:0000000100373100 FD 43 00 91 ADD X29, SP, #0x10
__text:0000000100373104 FF 83 1B D1 SUB SP, SP, #0x6E0
__text:0000000100373108 E8 63 11 91 ADD X8, SP, #0x6F0+var_298
__text:000000010037310C C9 14 00 D0 ADRP X9, #_NSApp_ptr@PAGE
__text:0000000100373110 29 61 45 F9 LDR X9, [X9,#_NSApp_ptr@PAGEOFF]
__text:0000000100373114 AA 0F 00 90 4A 69 1D 91 ADRL X10, aDmEnableDebugL ; "DM_ENABLE_DEBUG_LOGGING_ACTIVATION"
__text:000000010037311C 0B 00 80 D2 MOV X11, #0
__text:0000000100373120 0C 20 00 F0 8C 21 28 91 ADRL X12, qword_100776A08
__text:0000000100373128 4D 1C 00 F0 AD 81 2F 91 ADRL X13, selRef_stringByAppendingPathComponent_
__text:0000000100373130 AE 1C 00 B0 CE 41 14 91 ADRL X14, classRef_NSFileManager
__text:0000000100373138 4F 1C 00 F0 EF 01 05 91 ADRL X15, selRef_defaultManager
__text:0000000100373140 90 1C 00 90 10 42 2E 91 ADRL X16, selRef_alloc
__text:0000000100373148 B1 1C 00 D0 31 62 09 91 ADRL X17, classRef_NSError
__text:0000000100373150 C1 15 00 D0 21 A0 0E 91 ADRL X1, off_10062D3A8
__text:0000000100373158 C2 14 00 D0 ADRP X2, #___stack_chk_guard_ptr@PAGE
__text:000000010037315C 42 E8 46 F9 LDR X2, [X2,#___stack_chk_guard_ptr@PAGEOFF]
__text:0000000100373160 42 00 40 F9 LDR X2, [X2]
__text:0000000100373164 A2 83 1E F8 STUR X2, [X29,#var_18]
__text:0000000100373168 E0 FF 01 F9 STR X0, [SP,#0x6F0+var_2F8]
__text:000000010037316C 03 00 80 52 MOV W3, #0
```
opcode
```
FC 6F BE A9 FD 7B 01 A9 FD 43 00 91 FF 83 1B D1
E8 63 11 91 C9 14 00 D0 29 61 45 F9 AA 0F 00 90
4A 69 1D 91 0B 00 80 D2 0C 20 00 F0 8C 21 28 91
4D 1C 00 F0 AD 81 2F 91 AE 1C 00 B0 CE 41 14 91
4F 1C 00 F0 EF 01 05 91 90 1C 00 90 10 42 2E 91
B1 1C 00 D0 31 62 09 91 C1 15 00 D0 21 A0 0E 91
```
patch
```
20 00 80 D2 C0 03 5F D6
```

158
crack/CleanMyMacXMenu.md Normal file
View File

@ -0,0 +1,158 @@
## 1. patch CMMFoundation isMainAppActivated
`CleanMyMac X.app/Contents/Library/LoginItems/CleanMyMac X Menu.app/Contents/Frameworks/CMMFoundation.framework/Versions/A/CMMFoundation`
### x86_64
```
__text:0000000000071B20 ; char __cdecl +[CMSharedProtectedPreferencesBridge isMainAppActivated](id, SEL)
__text:0000000000071B20 __CMSharedProtectedPreferencesBridge_isMainAppActivated_ proc near
__text:0000000000071B20 ; DATA XREF: __objc_data:00000000001FBF08↓o
__text:0000000000071B20 55 push rbp
__text:0000000000071B21 48 89 E5 mov rbp, rsp
__text:0000000000071B24 E8 17 03 00 00 call sub_71E40
__text:0000000000071B29 0F B6 C0 movzx eax, al
__text:0000000000071B2C 83 E0 01 and eax, 1
__text:0000000000071B2F 5D pop rbp
__text:0000000000071B30 C3 retn
__text:0000000000071B30 __CMSharedProtectedPreferencesBridge_isMainAppActivated_ endp
__text:0000000000071B30
```
```
__text:0000000000071E40 sub_71E40 proc near ; CODE XREF: +[CMSharedProtectedPreferencesBridge isMainAppActivated]+4↑p
__text:0000000000071E40 ; static SharedProtectedPreferencesBridge.isMainAppActivated.getter+5↑j
__text:0000000000071E40
__text:0000000000071E40 var_30 = qword ptr -30h
__text:0000000000071E40
__text:0000000000071E40 55 push rbp
__text:0000000000071E41 48 89 E5 mov rbp, rsp
__text:0000000000071E44 41 57 push r15
__text:0000000000071E46 41 56 push r14
__text:0000000000071E48 41 55 push r13
__text:0000000000071E4A 41 54 push r12
__text:0000000000071E4C 53 push rbx
__text:0000000000071E4D 50 push rax
__text:0000000000071E4E 31 FF xor edi, edi
__text:0000000000071E50 E8 FF 21 10 00 call _$sSS10FoundationE8EncodingVMa ; type metadata accessor for String.Encoding
__text:0000000000071E55 48 8B 40 F8 mov rax, [rax-8]
__text:0000000000071E59 48 8B 40 40 mov rax, [rax+40h]
__text:0000000000071E5D 48 89 E3 mov rbx, rsp
__text:0000000000071E60 48 83 C0 0F add rax, 0Fh
__text:0000000000071E64 48 83 E0 F0 and rax, 0FFFFFFFFFFFFFFF0h
__text:0000000000071E68 48 29 C3 sub rbx, rax
__text:0000000000071E6B 48 89 DC mov rsp, rbx
__text:0000000000071E6E 48 83 3D 5A E8 18 00 FF cmp cs:qword_2006D0, 0FFFFFFFFFFFFFFFFh
__text:0000000000071E76 0F 85 E2 00 00 00 jnz loc_71F5E
__text:0000000000071E7C
```
opcode
```
55 48 89 E5 41 57 41 56 41 55 41 54 53 50 31 FF
E8 FF 21 10 00 48 8B 40 F8 48 8B 40 40 48 89 E3
48 83 C0 0F 48 83 E0 F0 48 29 C3 48 89 DC 48 83
3D 5A E8 18 00 FF 0F 85 E2 00 00 00 4C 8B 2D 8D
F3 18 00 4C 8B 3D 8E F3 18 00 4C 8B 35 8F F3 18
00 4C 89 EF BE 02 00 00 00 E8 E8 2E 10 00 4C 89
```
patch
```
6A 01 58 C3
```
after
```
__text:0000000000071E40 sub_71E40 proc near ; CODE XREF: +[CMSharedProtectedPreferencesBridge isMainAppActivated]+4↑p
__text:0000000000071E40 ; static SharedProtectedPreferencesBridge.isMainAppActivated.getter+5↑j
__text:0000000000071E40 6A 01 push 1
__text:0000000000071E42 58 pop rax
__text:0000000000071E43 C3 retn
__text:0000000000071E43 sub_71E40 endp
__text:0000000000071E43
```
### arm64
```
__text:0000000000071E00 ; bool __cdecl +[CMSharedProtectedPreferencesBridge isMainAppActivated](id, SEL)
__text:0000000000071E00 __CMSharedProtectedPreferencesBridge_isMainAppActivated_
__text:0000000000071E00 ; DATA XREF: __objc_methlist:0000000000179770↓o
__text:0000000000071E00
__text:0000000000071E00 var_s0 = 0
__text:0000000000071E00
__text:0000000000071E00 FD 7B BF A9 STP X29, X30, [SP,#-0x10+var_s0]!
__text:0000000000071E04 FD 03 00 91 MOV X29, SP
__text:0000000000071E08 B4 00 00 94 BL _$s13CMMFoundation32SharedProtectedPreferencesBridgeC18isMainAppActivatedSbvgZ_0 ; static SharedProtectedPreferencesBridge.isMainAppActivated.getter
__text:0000000000071E0C 00 00 00 12 AND W0, W0, #1
__text:0000000000071E10 FD 7B C1 A8 LDP X29, X30, [SP+var_s0],#0x10
__text:0000000000071E14 C0 03 5F D6 RET
__text:0000000000071E14 ; End of function +[CMSharedProtectedPreferencesBridge isMainAppActivated]
__text:0000000000071E14
```
```
__text:00000000000720D8 ; static CMMFoundation.SharedProtectedPreferencesBridge.isMainAppActivated.getter : Swift.Bool
__text:00000000000720D8 _$s13CMMFoundation32SharedProtectedPreferencesBridgeC18isMainAppActivatedSbvgZ_0
__text:00000000000720D8 ; CODE XREF: +[CMSharedProtectedPreferencesBridge isMainAppActivated]+8↑p
__text:00000000000720D8 ; static SharedProtectedPreferencesBridge.isMainAppActivated.getter↑j
__text:00000000000720D8
__text:00000000000720D8 var_30 = -0x30
__text:00000000000720D8 var_20 = -0x20
__text:00000000000720D8 var_10 = -0x10
__text:00000000000720D8 var_s0 = 0
__text:00000000000720D8
__text:00000000000720D8 F8 5F BC A9 STP X24, X23, [SP,#-0x10+var_30]!
__text:00000000000720DC F6 57 01 A9 STP X22, X21, [SP,#0x30+var_20]
__text:00000000000720E0 F4 4F 02 A9 STP X20, X19, [SP,#0x30+var_10]
__text:00000000000720E4 FD 7B 03 A9 STP X29, X30, [SP,#0x30+var_s0]
__text:00000000000720E8 FD C3 00 91 ADD X29, SP, #0x30
__text:00000000000720EC 00 00 80 D2 MOV X0, #0
__text:00000000000720F0 54 ED 03 94 BL _$sSS10FoundationE8EncodingVMa ; type metadata accessor for String.Encoding
__text:00000000000720F4 08 80 5F F8 LDUR X8, [X0,#-8]
__text:00000000000720F8 08 21 40 F9 LDR X8, [X8,#0x40]
__text:00000000000720FC E9 03 00 91 MOV X9, SP
__text:0000000000072100 08 3D 00 91 ADD X8, X8, #0xF
__text:0000000000072104 08 ED 7C 92 AND X8, X8, #0xFFFFFFFFFFFFFFF0
__text:0000000000072108 35 01 08 CB SUB X21, X9, X8
__text:000000000007210C BF 02 00 91 MOV SP, X21
__text:0000000000072110 28 0C 00 B0 ADRP X8, #qword_1F7A28@PAGE
__text:0000000000072114 08 15 45 F9 LDR X8, [X8,#qword_1F7A28@PAGEOFF]
__text:0000000000072118 1F 05 00 B1 CMN X8, #1
__text:000000000007211C A1 07 00 54 B.NE loc_72210
__text:0000000000072120
```
opcode
```
F8 5F BC A9 F6 57 01 A9 F4 4F 02 A9 FD 7B 03 A9
FD C3 00 91 00 00 80 D2 54 ED 03 94 08 80 5F F8
08 21 40 F9 E9 03 00 91 08 3D 00 91 08 ED 7C 92
35 01 08 CB BF 02 00 91 28 0C 00 B0 08 15 45 F9
1F 05 00 B1 A1 07 00 54 28 0C 00 D0 08 81 15 91
```
patch
```
20 00 80 D2 C0 03 5F D6
```
after
```
__text:00000000000720D8 ; static CMMFoundation.SharedProtectedPreferencesBridge.isMainAppActivated.getter : Swift.Bool
__text:00000000000720D8 _$s13CMMFoundation32SharedProtectedPreferencesBridgeC18isMainAppActivatedSbvgZ_0
__text:00000000000720D8 ; CODE XREF: +[CMSharedProtectedPreferencesBridge isMainAppActivated]+8↑p
__text:00000000000720D8 ; static SharedProtectedPreferencesBridge.isMainAppActivated.getter↑j
__text:00000000000720D8 20 00 80 D2 MOV X0, #1
__text:00000000000720DC C0 03 5F D6 RET
__text:00000000000720DC ; End of function static SharedProtectedPreferencesBridge.isMainAppActivated.getter
__text:00000000000720DC
```

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.application-identifier</key>
<string>com.macpaw.CleanMyMac4.HealthMonitor</string>
</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.application-identifier</key>
<string>com.macpaw.CleanMyMac4.Menu</string>
</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.application-identifier</key>
<string>com.macpaw.CleanMyMac4</string>
<key>com.apple.developer.aps-environment</key>
<string>production</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>webcredentials:my.macpaw.com</string>
</array>
</dict>
</plist>

24
readme.md Normal file
View File

@ -0,0 +1,24 @@
# CleanMyMac X for Mac Crack
Crack for CleanMyMac X for Mac 4.12.1 (41201.0.2211091011)
- [x] Support Intel
- [x] Support Apple Silicon (M1 & M2)
# Install
Go to releases page download and install.
# FAQ
## Is this crack safe?
It's opensource, you can use any hex file comparison tool you like to see what has been modified.
## I want to crack it myself.
Check the crack folder to see how I cracked it.
## Where to get update?
[https://git.icrack.day/somebasj/CleanMyMacXCrack](https://git.icrack.day/somebasj/CleanMyMacXCrack)

24
scripts/extra_entitlements.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
CUR_PATH=$(
cd $(dirname "$0");
pwd
)
ROOT_PATH=$(
cd "${CUR_PATH}/../";
pwd
)
function export_entitlements() {
codesign -d --entitlements - --xml "$1" 2>/dev/null | plutil -convert xml1 -o - - > "$2"
/usr/libexec/PlistBuddy -c "Delete :com.apple.security.application-groups" "$2" 2>/dev/null
/usr/libexec/PlistBuddy -c "Delete :com.apple.developer.team-identifier" "$2" 2>/dev/null
/usr/libexec/PlistBuddy -c "Delete :keychain-access-groups" "$2" 2>/dev/null
sed -i "" "s/S8EX82NJP6\.//g" "$2"
}
mkdir -p "${ROOT_PATH}/entitlements"
export_entitlements "/Volumes/CleanMyMac X/CleanMyMac X.app" "${ROOT_PATH}/entitlements/CleanMyMac X.entitlements"
export_entitlements "/Volumes/CleanMyMac X/CleanMyMac X.app/Contents/Library/LoginItems/CleanMyMac X HealthMonitor.app" "${ROOT_PATH}/entitlements/CleanMyMac X HealthMonitor.app.entitlements"
export_entitlements "/Volumes/CleanMyMac X/CleanMyMac X.app/Contents/Library/LoginItems/CleanMyMac X Menu.app" "${ROOT_PATH}/entitlements/CleanMyMac X Menu.app.entitlements"

147
scripts/publish.sh Executable file
View File

@ -0,0 +1,147 @@
#!/bin/bash
CUR_PATH=$(
cd $(dirname "$0");
pwd
)
ROOT_PATH=$(
cd "${CUR_PATH}/../";
pwd
)
TEMP_PATH="${ROOT_PATH}/tmp"
PUBLISH_PATH="${ROOT_PATH}/publish"
APP_VERSION="41201.0.2211091011"
#APP_VERSION="4.12.1"
DMG_SHA256SUM="3867b877b3bda4e9c41ceca69b81abc3f992cb5cded7c07312f638b33ee70842"
DMG_DOWNLOAD_URL="https://dl.devmate.com/com.macpaw.CleanMyMac4/CleanMyMacX.dmg"
DMG_FILE="${TEMP_PATH}/download/CleanMyMacX_${APP_VERSION}.dmg"
PUBLISH_FILE="${PUBLISH_PATH}/CleanMyMacX_${APP_VERSION}_Crack.dmg"
CODESIGN_CERT=-
if [ -n "$(security find-identity -v -p codesigning | grep 73B34EBEE504D5CEE35B113A22CEBFD381A21033)" ]; then
CODESIGN_CERT=73B34EBEE504D5CEE35B113A22CEBFD381A21033
fi
TMP_DIR="${TEMP_PATH}/dmg_files"
function sign_cmd() {
NAME=$(basename $1)
if [ -f "${ROOT_PATH}/entitlements/${NAME}.entitlements" ]; then
codesign -f -s "${CODESIGN_CERT}" --timestamp=none --all-architectures --deep \
--entitlements "${ROOT_PATH}/entitlements/${NAME}.entitlements" \
"$1"
else
codesign -f -s "${CODESIGN_CERT}" --timestamp=none --all-architectures --deep "$1"
fi
}
function ensure_download_dmg() {
if [ ! -f "${DMG_FILE}" ]; then
echo "[*] Download ${DMG_DOWNLOAD_URL}"
mkdir -p $(dirname "${DMG_FILE}")
curl -L --progress-bar -o "${DMG_FILE}" "${DMG_DOWNLOAD_URL}"
fi
if [ -f "${DMG_FILE}" ]; then
echo "[*] Check hash for \"${DMG_FILE}\""
FILE_HASH=$(shasum -a 256 -b "${DMG_FILE}" | awk '{print $1}')
if [ ${FILE_HASH} != ${DMG_SHA256SUM} ]; then
echo "[-] ${FILE_HASH} != ${DMG_SHA256SUM}"
echo "[*] Delete \"${DMG_FILE}\""
rm -f "${DMG_FILE}"
fi
fi
}
function copy_files() {
echo "[*] Copy files"
if [ -d "${TMP_DIR}" ]; then
rm -rf "${TMP_DIR}" > /dev/null
fi
mkdir -p "${TMP_DIR}" > /dev/null
hdiutil attach -noverify -noautofsck -noautoopen "${DMG_FILE}"
cp -R -X "/Volumes/CleanMyMac X/CleanMyMac X.app" "${TMP_DIR}/" > /dev/null
hdiutil detach "/Volumes/CleanMyMac X"
rm -f "${TMP_DIR}/CleanMyMac X.app/Contents/embedded.provisionprofile" > /dev/null
chflags -R 0 "${TMP_DIR}" > /dev/null
xattr -cr "${TMP_DIR}" > /dev/null
}
function apply_crack() {
echo "[*] Apply patch"
SRC="${ROOT_PATH}/crack/CleanMyMac X"
DST="${TMP_DIR}/CleanMyMac X.app/Contents/MacOS/CleanMyMac X"
cp -f "${SRC}" "${DST}" > /dev/null
chflags -R 0 "${DST}"
chmod 755 "${DST}"
SRC="${ROOT_PATH}/crack/CMMFoundation"
DST="${TMP_DIR}/CleanMyMac X.app/Contents/Library/LoginItems/CleanMyMac X Menu.app/Contents/Frameworks/CMMFoundation.framework/Versions/A/CMMFoundation"
cp -f "${SRC}" "${DST}" > /dev/null
chflags -R 0 "${DST}"
chmod 755 "${DST}"
}
function sign_other() {
oldIFS=$IFS
IFS=$'\n'
for name in $(ls "${TMP_DIR}/CleanMyMac X.app/Contents/Library/LoginItems/")
do
if [ -f "${TMP_DIR}/CleanMyMac X.app/Contents/Library/LoginItems/${name}/Contents/embedded.provisionprofile" ]; then
rm -f "${TMP_DIR}/CleanMyMac X.app/Contents/Library/LoginItems/${name}/Contents/embedded.provisionprofile" > /dev/null
fi
sign_cmd "${TMP_DIR}/CleanMyMac X.app/Contents/Library/LoginItems/${name}"
done
IFS=oldIFS
}
function sign_app() {
echo "[*] Sign App"
sign_other
if [ -f "${TMP_DIR}/CleanMyMac X.app/Contents/embedded.provisionprofile" ]; then
rm -f "${TMP_DIR}/CleanMyMac X.app/Contents/embedded.provisionprofile" > /dev/null
fi
sign_cmd "${TMP_DIR}/CleanMyMac X.app"
}
function create_dmg() {
echo "[*] Create dmg ${PUBLISH_FILE}"
mkdir -p "${PUBLISH_PATH}"
if [ -f "${PUBLISH_FILE}" ]; then
rm -f "${PUBLISH_FILE}" > /dev/null
fi
create-dmg \
--volname "CleanMyMac X" \
--background "${ROOT_PATH}/assets/CMMX.png" \
--window-pos 0 0 \
--window-size 679 412 \
--text-size 14 \
--icon-size 128 \
--icon "CleanMyMac X.app" 158 130 \
--app-drop-link 526 130\
--codesign "${CODESIGN_CERT}" \
"${PUBLISH_FILE}" \
"${TMP_DIR}/"
}
function publish_crack_dmg() {
#ensure_download_dmg
#copy_files
#apply_crack
sign_app
create_dmg
}
publish_crack_dmg