{"version":3,"file":"title.mjs","names":["findFuzzyOnce","TITLE_ARM64","TITLE_I386","TITLE_X8664","CPU_TYPE_ARM64","CPU_TYPE_I386","CPU_TYPE_X86_64","MacProjectTitlePatch","constructor","data","vmaddr","title","_data","_view","DataView","buffer","byteOffset","byteLength","_vmaddr","_title","MacProjectTitlePatchI386","CPU_TYPE","MacProjectTitlePatchX8664","MacProjectTitlePatchARM64","macProjectTitlePatches","_offset_","check","found","patch","v","i","setUint8","setUint32","_offsetJump_","offsetJump","getUint8","subarray","edi","pc","imm19","Math","floor","byCpuType","macProjectorTitlePatchesByCpuType","cpuType","Map","Patcher","list","get","push","set"],"sources":["../../../../src/util/internal/mac/title.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\n\nimport {findFuzzyOnce} from '../patch.ts';\n\nimport {TITLE_ARM64, TITLE_I386, TITLE_X8664} from './asm.ts';\nimport {CPU_TYPE_ARM64, CPU_TYPE_I386, CPU_TYPE_X86_64} from './constants.ts';\n\n/**\n * MacProjectTitlePatch object.\n */\nexport abstract class MacProjectTitlePatch {\n\tpublic static readonly CPU_TYPE: number;\n\n\tprotected _data: Uint8Array;\n\n\tprotected _view: DataView;\n\n\tprotected _vmaddr: number;\n\n\tprotected _title: number;\n\n\t/**\n\t * MacProjectTitlePatch constructor.\n\t *\n\t * @param data Code data.\n\t * @param vmaddr Code address.\n\t * @param title Title address.\n\t */\n\tconstructor(data: Uint8Array, vmaddr: number, title: number) {\n\t\tthis._data = data;\n\t\tthis._view = new DataView(\n\t\t\tdata.buffer,\n\t\t\tdata.byteOffset,\n\t\t\tdata.byteLength\n\t\t);\n\t\tthis._vmaddr = vmaddr;\n\t\tthis._title = title;\n\t}\n\n\t/**\n\t * Check patch.\n\t *\n\t * @returns True if valid patch, else false.\n\t */\n\tpublic abstract check(): boolean;\n\n\t/**\n\t * Apply patch.\n\t */\n\tpublic abstract patch(): void;\n}\n\n/**\n * MacProjectTitlePatchI386 object.\n */\nexport abstract class MacProjectTitlePatchI386 extends MacProjectTitlePatch {\n\tpublic static readonly CPU_TYPE = CPU_TYPE_I386;\n}\n\n/**\n * MacProjectTitlePatchX8664 object.\n */\nexport abstract class MacProjectTitlePatchX8664 extends MacProjectTitlePatch {\n\tpublic static readonly CPU_TYPE = CPU_TYPE_X86_64;\n}\n\n/**\n * MacProjectTitlePatchARM64 object.\n */\nexport abstract class MacProjectTitlePatchARM64 extends MacProjectTitlePatch {\n\tpublic static readonly CPU_TYPE = CPU_TYPE_ARM64;\n}\n\nexport const macProjectTitlePatches: {\n\tCPU_TYPE: number;\n\tnew (data: Uint8Array, vmaddr: number, title: number): MacProjectTitlePatch;\n}[] = [\n\t/**\n\t * 11.0.1.152 i386.\n\t */\n\tclass extends MacProjectTitlePatchI386 {\n\t\tprivate _offset_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_I386['11']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._offset_ = found;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 11;\n\n\t\t\t// lea ecx, ...\n\t\t\tv.setUint8(i++, 0x8d);\n\t\t\tv.setUint8(i++, 0x0d);\n\t\t\tv.setUint32(i, this._title, true);\n\t\t\ti += 4;\n\n\t\t\t// mov ebx, DWORD PTR [ecx]\n\t\t\tv.setUint8(i++, 0x8b);\n\t\t\tv.setUint8(i++, 0x19);\n\n\t\t\t// add ecx, 0x4\n\t\t\tv.setUint8(i++, 0x83);\n\t\t\tv.setUint8(i++, 0xc1);\n\t\t\tv.setUint8(i++, 0x04);\n\n\t\t\t// nop 6\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t}\n\t},\n\n\t/**\n\t * 11.0.1.152 x86_64.\n\t */\n\tclass extends MacProjectTitlePatchX8664 {\n\t\tprivate _offset_ = 0;\n\n\t\tprivate _offsetJump_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_X8664['11-1']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Sanity check the jump target instructions.\n\t\t\tconst offsetJump = found + 22 + this._view.getUint8(found + 21);\n\t\t\tif (\n\t\t\t\tfindFuzzyOnce(\n\t\t\t\t\tthis._data.subarray(offsetJump, offsetJump + 7),\n\t\t\t\t\tTITLE_X8664['11-2']\n\t\t\t\t) !== 0\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._offset_ = found;\n\t\t\tthis._offsetJump_ = offsetJump;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 10;\n\n\t\t\t// lea rsi, [rip+...]\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x8d);\n\t\t\tv.setUint8(i++, 0x35);\n\t\t\tv.setUint32(i, this._title - (this._vmaddr + i + 4), true);\n\t\t\ti += 4;\n\n\t\t\t// movsxd rdx, DWORD PTR [rsi]\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x63);\n\t\t\tv.setUint8(i++, 0x16);\n\n\t\t\t// jmp --\n\t\t\tv.setUint8(i++, 0xeb);\n\n\t\t\ti = this._offsetJump_;\n\n\t\t\t// add rsi, 0x4\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x83);\n\t\t\tv.setUint8(i++, 0xc6);\n\t\t\tv.setUint8(i++, 0x04);\n\n\t\t\t// nop 3\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t}\n\t},\n\n\t/**\n\t * 13.0.0.182 i386.\n\t */\n\tclass extends MacProjectTitlePatchI386 {\n\t\tprivate _offset_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_I386['13']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._offset_ = found;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst edi = this._vmaddr + this._offset_ + 13;\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 14;\n\n\t\t\t// lea eax, [edi+...]\n\t\t\tv.setUint8(i++, 0x8d);\n\t\t\tv.setUint8(i++, 0x87);\n\t\t\tv.setUint32(i, this._title - edi, true);\n\t\t\ti += 4;\n\n\t\t\t// mov ecx, DWORD PTR [eax]\n\t\t\tv.setUint8(i++, 0x8b);\n\t\t\tv.setUint8(i++, 0x08);\n\n\t\t\t// mov DWORD PTR [esp+0x8], ecx\n\t\t\ti += 4;\n\n\t\t\t// add eax, 0x4\n\t\t\tv.setUint8(i++, 0x83);\n\t\t\tv.setUint8(i++, 0xc0);\n\t\t\tv.setUint8(i++, 0x04);\n\n\t\t\t// nop 6\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t}\n\t},\n\n\t/**\n\t * 13.0.0.182 x86_64.\n\t */\n\tclass extends MacProjectTitlePatchX8664 {\n\t\tprivate _offset_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_X8664['13']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._offset_ = found;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 10;\n\n\t\t\t// lea rsi, [rip+...]\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x8d);\n\t\t\tv.setUint8(i++, 0x35);\n\t\t\tv.setUint32(i, this._title - (this._vmaddr + i + 4), true);\n\t\t\ti += 4;\n\n\t\t\t// movsxd rdx, DWORD PTR [rsi]\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x63);\n\t\t\tv.setUint8(i++, 0x16);\n\n\t\t\t// add rsi, 0x4\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x83);\n\t\t\tv.setUint8(i++, 0xc6);\n\t\t\tv.setUint8(i++, 0x04);\n\n\t\t\t// nop 4\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t}\n\t},\n\n\t/**\n\t * 23.0.0.162 i386.\n\t */\n\tclass extends MacProjectTitlePatchI386 {\n\t\tprivate _offset_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_I386['23']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._offset_ = found;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst edi = this._vmaddr + this._offset_ + 13;\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 25;\n\n\t\t\t// lea eax, [edi+...]\n\t\t\tv.setUint8(i++, 0x8d);\n\t\t\tv.setUint8(i++, 0x87);\n\t\t\tv.setUint32(i, this._title - edi, true);\n\t\t\ti += 4;\n\n\t\t\t// mov edx, DWORD PTR [eax]\n\t\t\tv.setUint8(i++, 0x8b);\n\t\t\tv.setUint8(i++, 0x10);\n\n\t\t\t// add eax, 0x4\n\t\t\tv.setUint8(i++, 0x83);\n\t\t\tv.setUint8(i++, 0xc0);\n\t\t\tv.setUint8(i++, 0x04);\n\n\t\t\t// nop 3\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t}\n\t},\n\n\t/**\n\t * 23.0.0.162 x86_64.\n\t */\n\tclass extends MacProjectTitlePatchX8664 {\n\t\tprivate _offset_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_X8664['23']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._offset_ = found;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 20;\n\n\t\t\t// lea rsi, [rip+...]\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x8d);\n\t\t\tv.setUint8(i++, 0x35);\n\t\t\tv.setUint32(i, this._title - (this._vmaddr + i + 4), true);\n\t\t\ti += 4;\n\n\t\t\t// movsxd rdx, DWORD PTR [rsi]\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x63);\n\t\t\tv.setUint8(i++, 0x16);\n\n\t\t\t// add rsi, 0x4\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x83);\n\t\t\tv.setUint8(i++, 0xc6);\n\t\t\tv.setUint8(i++, 0x04);\n\n\t\t\t// nop 4\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t}\n\t},\n\n\t/**\n\t * 35.0.0.1 x86_64.\n\t */\n\tclass extends MacProjectTitlePatchX8664 {\n\t\tprivate _offset_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_X8664['35']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._offset_ = found;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 20;\n\n\t\t\t// lea rsi, [rip+...]\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x8d);\n\t\t\tv.setUint8(i++, 0x35);\n\t\t\tv.setUint32(i, this._title - (this._vmaddr + i + 4), true);\n\t\t\ti += 4;\n\n\t\t\t// movsxd rdx, DWORD PTR [rsi]\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x63);\n\t\t\tv.setUint8(i++, 0x16);\n\n\t\t\t// add rsi, 0x4\n\t\t\tv.setUint8(i++, 0x48);\n\t\t\tv.setUint8(i++, 0x83);\n\t\t\tv.setUint8(i++, 0xc6);\n\t\t\tv.setUint8(i++, 0x04);\n\n\t\t\t// nop 5\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t\tv.setUint8(i++, 0x90);\n\t\t}\n\t},\n\n\t/**\n\t * 35.0.0.60-release ARM64.\n\t */\n\tclass extends MacProjectTitlePatchARM64 {\n\t\tprivate _offset_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_ARM64['35-release']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._offset_ = found;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 32;\n\t\t\tconst title = this._title;\n\n\t\t\t// Calculate PC relative pointer to within 12 bits (added after).\n\t\t\tconst pc = this._vmaddr + i;\n\t\t\tconst imm19 = Math.floor(title / 4096) - Math.floor(pc / 4096);\n\n\t\t\t// adrp x1, ? ; _title@PAGE\n\t\t\tv.setUint32(\n\t\t\t\ti,\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t(0x90000001 | ((imm19 & 3) << 29) | ((imm19 >> 2) << 5)) >>> 0,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\ti += 4;\n\n\t\t\t// add  x1, x1, ? ; _title@PAGEOFF\n\t\t\tv.setUint32(\n\t\t\t\ti,\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t(0x91000021 | ((title & 0xfff) << 10)) >>> 0,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\ti += 4;\n\n\t\t\t// ldr  w2, [x1] ; *((int *)_title)\n\t\t\tv.setUint32(i, 0xb9400022, true);\n\t\t\ti += 4;\n\n\t\t\t// add  x1, x1, 4 ; (char *)(_title + 4)\n\t\t\tv.setUint32(i, 0x91001021, true);\n\t\t}\n\t},\n\n\t/**\n\t * 35.0.0.60-debug ARM64.\n\t */\n\tclass extends MacProjectTitlePatchARM64 {\n\t\tprivate _offset_ = 0;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tconst found = findFuzzyOnce(this._data, TITLE_ARM64['35-debug']);\n\t\t\tif (found === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._offset_ = found;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst v = this._view;\n\t\t\tlet i = this._offset_ + 72;\n\t\t\tconst title = this._title;\n\n\t\t\t// ldr  x0, [sp, #0x20] ; _kCFAllocatorDefault\n\t\t\tv.setUint32(i, 0xf94013e0, true);\n\t\t\ti += 4;\n\n\t\t\t// Calculate PC relative pointer to within 12 bits (added after).\n\t\t\tconst pc = this._vmaddr + i;\n\t\t\tconst imm19 = Math.floor(title / 4096) - Math.floor(pc / 4096);\n\n\t\t\t// adrp x1, ? ; _title@PAGE\n\t\t\tv.setUint32(\n\t\t\t\ti,\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t(0x90000001 | ((imm19 & 3) << 29) | ((imm19 >> 2) << 5)) >>> 0,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\ti += 4;\n\n\t\t\t// add  x1, x1, ? ; _title@PAGEOFF\n\t\t\tv.setUint32(\n\t\t\t\ti,\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t(0x91000021 | ((title & 0xfff) << 10)) >>> 0,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\ti += 4;\n\n\t\t\t// ldr  w2, [x1] ; *((int *)_title)\n\t\t\tv.setUint32(i, 0xb9400022, true);\n\t\t\ti += 4;\n\n\t\t\t// add  x1, x1, 4 ; (char *)(_title + 4)\n\t\t\tv.setUint32(i, 0x91001021, true);\n\t\t}\n\t}\n];\n\nlet byCpuType: Map<number, (typeof macProjectTitlePatches)[0][]> | null;\n\n/**\n * Get the projector patches mapped to CPU type.\n *\n * @param cpuType CPU type to get.\n * @returns Map of type to patcher list.\n */\nexport function macProjectorTitlePatchesByCpuType(cpuType: number) {\n\tif (!byCpuType) {\n\t\tbyCpuType = new Map();\n\t\tfor (const Patcher of macProjectTitlePatches) {\n\t\t\tconst {CPU_TYPE} = Patcher;\n\t\t\tconst list = byCpuType.get(CPU_TYPE) || [];\n\t\t\tlist.push(Patcher);\n\t\t\tbyCpuType.set(CPU_TYPE, list);\n\t\t}\n\t}\n\treturn byCpuType.get(cpuType) || [];\n}\n"],"mappings":"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","ignoreList":[]}