Browse Source

Fix CLauncherTipContextMenu::_ExecuteCommand() pattern for latest 24H2/25H2 (#4370)

pull/4568/merge
Amrsatrio 5 months ago
parent
commit
caa2452872
  1. 22
      ExplorerPatcher/TwinUIPatches.cpp

22
ExplorerPatcher/TwinUIPatches.cpp

@ -3246,30 +3246,32 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
if (!pOffsets[4] || pOffsets[4] == 0xFFFFFFFF) if (!pOffsets[4] || pOffsets[4] == 0xFFFFFFFF)
{ {
#if defined(_M_X64) #if defined(_M_X64)
// 48 8B ? E8 ? ? ? ? 48 8B D3 48 8B CF E8 ? ? ? ? 90 48 8D 56 ? 48 8B CE // Cobalt:
// ^^^^^^^ ------------------- Non-inlined ~::final_suspend() // 48 89 46 ? 48 8B CB E8 ? ? ? ? 48 8B D3 48 8B CF E8 ? ? ? ? 90
// ^^^^^^^
PBYTE match = (PBYTE)FindPattern( PBYTE match = (PBYTE)FindPattern(
pFile, dwSize, pFile, dwSize,
"\x48\x8B\x00\xE8\x00\x00\x00\x00\x48\x8B\xD3\x48\x8B\xCF\xE8\x00\x00\x00\x00\x90\x48\x8D\x56\x00\x48\x8B\xCE", "\x48\x89\x46\x00\x48\x8B\xCB\xE8\x00\x00\x00\x00\x48\x8B\xD3\x48\x8B\xCF\xE8\x00\x00\x00\x00\x90",
"xx?x????xxxxxxx????xxxx?xxx" "xxx?xxxx????xxxxxxx????x"
); );
if (match) if (match)
{ {
match += 14; match += 18;
pOffsets[4] = (DWORD)(match + 5 + *(int*)(match + 1) - pFile); pOffsets[4] = (DWORD)(match + 5 + *(int*)(match + 1) - pFile);
} }
else else
{ {
// 48 8B ? E8 ? ? ? ? 48 8B D3 48 8B CF E8 ? ? ? ? 90 48 8B 05 ? ? ? ? 48 // Nickel+:
// ^^^^^^^ ------------------- Inlined ~::final_suspend() // 48 89 03 48 8B CB E8 ? ? ? ? 48 8B D3 48 8B CF E8 ? ? ? ? 90
// ^^^^^^^
match = (PBYTE)FindPattern( match = (PBYTE)FindPattern(
pFile, dwSize, pFile, dwSize,
"\x48\x8B\x00\xE8\x00\x00\x00\x00\x48\x8B\xD3\x48\x8B\xCF\xE8\x00\x00\x00\x00\x90\x48\x8B\x05\x00\x00\x00\x00\x48", "\x48\x89\x03\x48\x8B\xCB\xE8\x00\x00\x00\x00\x48\x8B\xD3\x48\x8B\xCF\xE8\x00\x00\x00\x00\x90",
"xx?x????xxxxxxx????xxxx????x" "xxxxxxx????xxxxxxx????x"
); );
if (match) if (match)
{ {
match += 14; match += 17;
pOffsets[4] = (DWORD)(match + 5 + *(int*)(match + 1) - pFile); pOffsets[4] = (DWORD)(match + 5 + *(int*)(match + 1) - pFile);
} }
} }

Loading…
Cancel
Save