J'accroche la fonction CreateWindowExW
en utilisant la lib EasyHook .
Quand il revient à la ligne return CreateWindowExW(dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
c'est le cas :
- Retourner le original fonction 'interceptée' avec les paramètres modifiés par moi
X, Y, nWidth, nHeight
?
o
- Il s'agit d'appeler la fonction originale plus une nouvelle
CreateWindowExW
avec les mêmes paramètres ?
Si dans le cas de 2
comment puis-je renvoyer le original
appel de fonction avec des valeurs modifiées ?
Mon doute est que je doive définir CreateWindowExW
quelque part, et comment l'"appeler" avec la fonction de crochet "interceptée" actuelle ?
C'est le ensemble du site code, je n'ai pas CreateWindowExW
définis ailleurs :
HWND __stdcall CreateWindowExW_Hook(
DWORD dwExStyle,
LPCWSTR lpClassName,
LPCWSTR lpWindowName,
DWORD dwStyle,
int X,
int Y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
)
{
X = 50; Y = 50; nWidth = 400; nHeight = 300;
return CreateWindowExW(dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
}
extern "C" void __declspec(dllexport) __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* inRemoteInfo);
void __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* inRemoteInfo)
{
HOOK_TRACE_INFO hHook = { NULL };
NTSTATUS result = LhInstallHook(
GetProcAddress(GetModuleHandle(TEXT("User32")), "CreateWindowExW"),
CreateWindowExW_Hook,
NULL,
&hHook);
ULONG ACLEntries[1] = { 0 };
LhSetExclusiveACL(ACLEntries, 1, &hHook);
}