@@ -3164,17 +3164,17 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
31643164 pOffsets[0 ] = (DWORD)(match + 5 + *(int *)(match + 1 ) - pFile);
31653165 }
31663166#elif defined(_M_ARM64)
3167- // ?? AE 00 71 ?? ?? 00 54 ?? 06 40 F9 E3 03 ?? AA E2 03 ?? AA E1 03 ?? 2A ?? ?? ?? ??
3167+ // ?? ?? 00 71 ?? ?? 00 54 ?? ?? 40 F9 E3 03 ?? AA E2 03 ?? AA E1 03 ?? 2A ?? ?? ?? ??
31683168 // ^^^^^^^^^^^
31693169 // Ref: CMultitaskingViewFrame::v_WndProc()
31703170 PBYTE match = (PBYTE)FindPattern (
31713171 pFile, dwSize,
3172- " \xAE\ x00\x71\x00\x00\x00\x54\x00\x06 \x40\xF9\xE3\x03\x00\xAA\xE2\x03\x00\xAA\xE1\x03\x00\x2A " ,
3173- " xxx ??xx?xxxxx ?xxx?xxx?x"
3172+ " \x00\x71\x00\x00\x00\x54\x00\x00 \x40\xF9\xE3\x03\x00\xAA\xE2\x03\x00\xAA\xE1\x03\x00\x2A " ,
3173+ " xx ??xx??xxxx ?xxx?xxx?x"
31743174 );
31753175 if (match)
31763176 {
3177- match += 23 ;
3177+ match += 22 ;
31783178 pOffsets[0 ] = (DWORD)FileOffsetToRVA (pFile, (PBYTE)ARM64_FollowBL ((DWORD*)match) - pFile);
31793179 }
31803180#endif
@@ -3186,25 +3186,25 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
31863186 if (!pOffsets[1 ] || pOffsets[1 ] == 0xFFFFFFFF )
31873187 {
31883188#if defined(_M_X64)
3189- // Don't worry if this is too long, this works on 17763 and 25951
3190- // 40 55 53 56 57 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 48 8B 05 ? ? ? ? 48 33 C4 48 89 85 ? ? ? ? 4C 8B B5 ? ? ? ? 41 8B C1
3189+ // Don't worry if this is too long, this works on 17763 ~ 27943
3190+ // 40 55 53 56 57 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 48 8B 05 ? ? ? ? 48 33 C4 48 89 85 ? ? ? ? 4C 8B ? ? ? ? ? 41 8B C1
31913191 PBYTE match = (PBYTE)FindPattern (
31923192 pFile, dwSize,
3193- " \x40\x55\x53\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\xAC\x24\x00\x00\x00\x00\x48\x81\xEC\x00\x00\x00\x00\x48\x8B\x05\x00\x00\x00\x00\x48\x33\xC4\x48\x89\x85\x00\x00\x00\x00\x4C\x8B\xB5 \x00\x00\x00\x00\x41\x8B\xC1 " ,
3194- " xxxxxxxxxxxxxxxxx????xxx????xxx????xxxxxx????xxx ????xxx"
3193+ " \x40\x55\x53\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\xAC\x24\x00\x00\x00\x00\x48\x81\xEC\x00\x00\x00\x00\x48\x8B\x05\x00\x00\x00\x00\x48\x33\xC4\x48\x89\x85\x00\x00\x00\x00\x4C\x8B\x00 \x00\x00\x00\x00\x41\x8B\xC1 " ,
3194+ " xxxxxxxxxxxxxxxxx????xxx????xxx????xxxxxx????xx? ????xxx"
31953195 );
31963196 if (match)
31973197 {
31983198 pOffsets[1 ] = (DWORD)(match - pFile);
31993199 }
32003200#elif defined(_M_ARM64)
3201- // 40 F9 43 03 1C 32 E4 03 15 AA ?? ?? FF 97
3201+ // 40 F9 43 03 1C 32 E4 03 ?? AA ?? ?? FF 97
32023202 // ^^^^^^^^^^^
32033203 // Ref: ImmersiveContextMenuHelper::ApplyOwnerDrawToMenu()
32043204 PBYTE match = (PBYTE)FindPattern (
32053205 pFile, dwSize,
3206- " \x40\xF9\x43\x03\x1C\x32\xE4\x03\x15 \xAA\x00\x00\xFF\x97 " ,
3207- " xxxxxxxxxx ??xx"
3206+ " \x40\xF9\x43\x03\x1C\x32\xE4\x03\x00 \xAA\x00\x00\xFF\x97 " ,
3207+ " xxxxxxxx?x ??xx"
32083208 );
32093209 if (match)
32103210 {
@@ -3231,12 +3231,12 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
32313231 pOffsets[2 ] = (DWORD)(match - pFile);
32323232 }
32333233#elif defined(_M_ARM64)
3234- // 7F 23 03 D5 F3 53 BF A9 FD 7B BB A9 FD 03 00 91 F3 03 00 AA F4 03 01 AA ?? ?? ?? ?? FF ?? 03 A9
3234+ // 7F 23 03 D5 F3 53 BF A9 FD 7B BB A9 FD 03 00 91 ?? 03 00 AA ?? 03 01 AA ?? ?? ?? ?? FF ?? 03 A9
32353235 // ----------- PACIBSP, don't scan for this because it's everywhere
32363236 PBYTE match = (PBYTE)FindPattern (
32373237 pFile, dwSize,
3238- " \xF3\x53\xBF\xA9\xFD\x7B\xBB\xA9\xFD\x03\x00\x91\xF3 \x03\x00\xAA\xF4 \x03\x01\xAA\x00\x00\x00\x00\xFF\x00\x03\xA9 " ,
3239- " xxxxxxxxxxxxxxxxxxxx ????x?xx"
3238+ " \xF3\x53\xBF\xA9\xFD\x7B\xBB\xA9\xFD\x03\x00\x91\x00 \x03\x00\xAA\x00 \x03\x01\xAA\x00\x00\x00\x00\xFF\x00\x03\xA9 " ,
3239+ " xxxxxxxxxxxx?xxx?xxx ????x?xx"
32403240 );
32413241 if (match)
32423242 {
@@ -3264,17 +3264,32 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
32643264 match += 17 ;
32653265 pOffsets[3 ] = (DWORD)(match + 5 + *(int *)(match + 1 ) - pFile);
32663266 }
3267+ else
3268+ {
3269+ // 48 8B ? E8 ? ? ? ? 4C 8D 47 ? 48 8B ? 48 8B CE E8 ? ? ? ? 90
3270+ // ^^^^^^^
3271+ match = (PBYTE)FindPattern (
3272+ pFile, dwSize,
3273+ " \x48\x8B\xCB\xE8\x00\x00\x00\x00\x4C\x8D\x47\x00\x48\x8B\x00\x48\x8B\xCE\xE8\x00\x00\x00\x00\x90 " ,
3274+ " xx?x????xxx?xx?xxxx????x"
3275+ );
3276+ if (match)
3277+ {
3278+ match += 18 ;
3279+ pOffsets[3 ] = (DWORD)(match + 5 + *(int *)(match + 1 ) - pFile);
3280+ }
3281+ }
32673282#elif defined(_M_ARM64)
3268- // 82 62 00 91 ?? ?? 00 91 E0 03 ?? AA ?? ?? ?? ?? 1F 20 03 D5
3269- // ^^^^^^^^^^^
3283+ // ?? 0A 40 F9 ?? 02 40 F9 ?? ?? 00 F9 ?? ?? ?? ?? ?? 62 00 91 ?? ?? 00 91 E0 03 ?? AA ?? ?? ?? ?? 1F 20 03 D5
3284+ // ^^^^^^^^^^^
32703285 PBYTE match = (PBYTE)FindPattern (
32713286 pFile, dwSize,
3272- " \x82 \x62\x00\x91\x00\x00\x00\x91\xE0\x03\x00\xAA\x00\x00\x00\x00\x1F\x20\x03\xD5 " ,
3273- " xxxx ??xxxx?x????xxxx"
3287+ " \x0A\x40\xF9\x00\x02\x40\xF9\x00\x00\x00\xF9\x00\x00\x00\x00\x00 \x62\x00\x91\x00\x00\x00\x91\xE0\x03\x00\xAA\x00\x00\x00\x00\x1F\x20\x03\xD5 " ,
3288+ " xxx?xxx??xx?????xxx ??xxxx?x????xxxx"
32743289 );
32753290 if (match)
32763291 {
3277- match += 12 ;
3292+ match += 27 ;
32783293 pOffsets[3 ] = (DWORD)FileOffsetToRVA (pFile, (PBYTE)ARM64_FollowBL ((DWORD*)match) - pFile);
32793294 }
32803295#endif
@@ -3375,11 +3390,11 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
33753390 }
33763391 }
33773392#elif defined(_M_ARM64)
3378- // F3 53 BE A9 F5 5B 01 A9 FD 7B ?? A9 FD 03 00 91 30 00 80 92 F5 03 04 AA B0 ?? 00 F9 F3 03 00 AA BF 02 00 F9 68 2E 40 F9 F6 03 03 AA B3 23 02 A9 ?? ?? 00 B5
3393+ // F3 53 BE A9 F5 5B 01 A9 FD 7B ?? A9 FD 03 00 91 30 00 80 92 ?? 03 04 AA B0 ?? 00 F9 ?? 03 00 AA ?? 02 00 F9 ?? 2E 40 F9 ?? 03 03 AA ?? 23 02 A9 ?? ?? 00 B5
33793394 PBYTE match = (PBYTE)FindPattern (
33803395 pFile, dwSize,
3381- " \xF3\x53\xBE\xA9\xF5\x5B\x01\xA9\xFD\x7B\x00\xA9\xFD\x03\x00\x91\x30\x00\x80\x92\xF5 \x03\x04\xAA\xB0\x00\x00\xF9\xF3 \x03\x00\xAA\xBF \x02\x00\xF9\x68 \x2E\x40\xF9\xF6 \x03\x03\xAA\xB3 \x23\x02\xA9\x00\x00\x00\xB5 " ,
3382- " xxxxxxxxxx?xxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxx ??xx"
3396+ " \xF3\x53\xBE\xA9\xF5\x5B\x01\xA9\xFD\x7B\x00\xA9\xFD\x03\x00\x91\x30\x00\x80\x92\x00 \x03\x04\xAA\xB0\x00\x00\xF9\x00 \x03\x00\xAA\x00 \x02\x00\xF9\x00 \x2E\x40\xF9\x00 \x03\x03\xAA\x00 \x23\x02\xA9\x00\x00\x00\xB5 " ,
3397+ " xxxxxxxxxx?xxxxxxxxx?xxxx?xx?xxx?xxx?xxx?xxx?xxx ??xx"
33833398 );
33843399 if (match)
33853400 {
@@ -3428,11 +3443,11 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
34283443 }
34293444 }
34303445#elif defined(_M_ARM64)
3431- // F3 53 BC A9 F5 5B 01 A9 F7 13 00 F9 F9 17 00 F9 FB 1B 00 F9 FD 7B BC A9 FD 03 00 91 FF ?? 00 D1 30 00 80 92 FB 03 04 AA
3446+ // F3 53 BC A9 F5 5B 01 A9 F7 13 00 F9 F9 17 00 F9 FB 1B 00 F9 FD 7B BC A9 FD 03 00 91 FF ?? 00 D1 30 00 80 92 ?? 03 04 AA
34323447 PBYTE match = (PBYTE)FindPattern (
34333448 pFile, dwSize,
3434- " \xF3\x53\xBC\xA9\xF5\x5B\x01\xA9\xF7\x13\x00\xF9\xF9\x17\x00\xF9\xFB\x1B\x00\xF9\xFD\x7B\xBC\xA9\xFD\x03\x00\x91\xFF\x00\x00\xD1\x30\x00\x80\x92\xFB \x03\x04\xAA " ,
3435- " xxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxx "
3449+ " \xF3\x53\xBC\xA9\xF5\x5B\x01\xA9\xF7\x13\x00\xF9\xF9\x17\x00\xF9\xFB\x1B\x00\xF9\xFD\x7B\xBC\xA9\xFD\x03\x00\x91\xFF\x00\x00\xD1\x30\x00\x80\x92\x00 \x03\x04\xAA " ,
3450+ " xxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxx?xxx "
34363451 );
34373452 if (match)
34383453 {
0 commit comments