Skip to content

Commit 17ba033

Browse files
committed
Improve deobfuscateAppleGPU
- include missing chipsets that support ios >= 13 - when magic pixel value is missing in our lookup, default to both newer and older models
1 parent 27e3bbe commit 17ba033

File tree

1 file changed

+49
-15
lines changed

1 file changed

+49
-15
lines changed

src/internal/deobfuscateAppleGPU.ts

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -92,29 +92,63 @@ export const deobfuscateAppleGPU = (
9292

9393
gl.deleteProgram(program);
9494
gl.deleteBuffer(vertexArray);
95-
96-
renderers =
97-
({
95+
const id = pixels.join('');
96+
const { older, newer } = deviceInfo?.isIpad
97+
? {
98+
newer: [
99+
'apple a12 gpu', // ipad 8th gen / ipad air 3rd gen / ipad mini 5th gen
100+
'apple a12x gpu', // pro 11 1st gen / pro 12.9 3rd gen
101+
'apple a12z gpu', // pro 12.9 4th gen / pro 11 2nd gen
102+
'apple a14 gpu', // ipad air 4th gen
103+
'apple m1 gpu' // ipad pro 11 2nd gen / 12.9 5th gen
104+
],
105+
older: [
106+
// Commented out because they don't support ios version >= 13
107+
// 'apple a4 gpu', // ipad 1st gen
108+
// 'apple a5 gpu', // ipad 2 / ipad mini 1st gen
109+
// 'apple a5x gpu', // ipad 3rd gen
110+
// 'apple a6x gpu', // ipad 4th gen
111+
'apple a8 gpu', // pad mini 4
112+
'apple a8x gpu', // ipad air 2
113+
'apple a9 gpu', // ipad 5th gen
114+
'apple a9x gpu', // pro 9.7 2016 / pro 12.9 2015
115+
'apple a10 gpu', // ipad 7th gen / ipad 6th gen
116+
'apple a10x gpu' // pro 10.5 2017 / pro 12.9 2nd gen, 2017
117+
]
118+
}
119+
: {
120+
newer: [
121+
'apple a11 gpu', // 8 / 8 plus / X
122+
'apple a12 gpu', // XS / XS Max / XR
123+
'apple a13 gpu', // 11 / 11 pro / 11 pro max / se 2nd gen
124+
'apple a14 gpu' // 12 / 12 mini / 12 pro / 12 pro max
125+
],
126+
older: [
127+
// Commented out because they don't support ios version >= 13
128+
// 'apple a4 gpu', // 4 / ipod touch 4th gen
129+
// 'apple a5 gpu', // 4S / ipod touch 5th gen
130+
// 'apple a6 gpu', // 5 / 5C
131+
// 'apple a7 gpu', // 5S
132+
// 'aple a8 gpu', // 6 / 6 plus / ipod touch 6th gen
133+
'apple a9 gpu', // 6s / 6s plus/ se 1st gen
134+
'apple a10 gpu' // 7 / 7 plus / iPod Touch 7th gen
135+
]
136+
};
137+
renderers = (
138+
{
98139
// iPhone 11, 11 Pro, 11 Pro Max (Apple A13 GPU)
99140
// iPad Pro (Apple A12X GPU)
100141
// iPhone XS, XS Max, XR (Apple A12 GPU)
101142
// iPhone 8, 8 Plus (Apple A11 GPU)
102-
'801621810': deviceInfo?.isIpad
103-
? ['apple a12x gpu']
104-
: [
105-
'apple a11 gpu',
106-
'apple a12 gpu',
107-
'apple a13 gpu',
108-
'apple a14 gpu',
109-
],
143+
'801621810': newer,
144+
'80162181255': newer,
110145
// iPhone SE, 6S, 6S Plus (Apple A9 GPU)
111146
// iPhone 7, 7 Plus (Apple A10 GPU)
112147
// iPad Pro (Apple A10X GPU)
113-
'8016218135': deviceInfo?.isIpad
114-
? ['apple a9x gpu', 'apple a10 gpu', 'apple a10x gpu']
115-
: ['apple a9 gpu', 'apple a10 gpu'],
148+
'8016218135': older,
116149
// eslint-disable-next-line @typescript-eslint/no-explicit-any
117-
} as any)[pixels.join('')] || renderers;
150+
} as any
151+
)[id] ?? [...newer, ...older];
118152

119153
debug?.(
120154
`iOS 12.2+ obfuscates its GPU type and version, using closest matches: ${renderers}`

0 commit comments

Comments
 (0)