mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-04-11 17:37:22 +10:00
* Add ARM64 build configurations to projects * StartMenu: add ARM64 support * Add support for IAT hooking on ARM64 * Add ARM64 support to Classic IE * Add ARM64 support to installer NB: WiX 3.14.0.3910 or higher is required to create the MSI * Revert whitespace change * Separate x86/x64 and ARM64 installers * Change suffix of ARM64 binaries * Put also ARM64 MSI to final installer * Fix sln * Build some DLLs as ARM64X These are meant to be loaded to both x64 and ARM64 processes. We will compile them as ARM64X (when building for ARM64). That way they will contain both x64 and ARM64 code paths. https://learn.microsoft.com/en-us/windows/arm/arm64x-pe * Make sure x64 installer cannot be installed on ARM64 In case if somebody manually tries to install x64 MSI on ARM64. This is not supported/working scenario. --------- Co-authored-by: ge0rdi <ge0rdi@users.noreply.github.com>
24 lines
843 B
C
24 lines
843 B
C
// Classic Shell (c) 2009-2017, Ivo Beltchev
|
|
// Open-Shell (c) 2017-2018, The Open-Shell Team
|
|
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
|
|
|
|
#pragma once
|
|
|
|
struct IatHookData
|
|
{
|
|
#if defined(_M_AMD64) || defined(_M_IX86)
|
|
unsigned char jump[4]; // jump instruction 0x90, 0x90, 0xFF, 0x25
|
|
DWORD jumpOffs; // jump instruction offset
|
|
#elif defined(_M_ARM64)
|
|
unsigned char jump[8]; // LDR <address>, BR
|
|
#endif
|
|
void *newProc; // the address of the new proc
|
|
void *oldProc; // the address of the old proc
|
|
IMAGE_THUNK_DATA *thunk; // the IAT thunk
|
|
};
|
|
|
|
void InitializeIatHooks( void );
|
|
IatHookData *SetIatHook( HMODULE hPatchedModule, const char *targetModule, const char *targetProc, void *newProc );
|
|
void ClearIatHook( IatHookData *hook );
|
|
void ClearIatHooks( void );
|