Bisher habe ich viel Zeit mit SetWindowsHookEx, VirtualProtect, ShellExecuteW und allen möglichen globalen Hooks verbracht , aber nichts funktioniert. Es ist mir gelungen, einen Hook zu installieren, der benachrichtigt wird, wenn einige Fenster aktiviert sind, aber nicht irgendein Fenster und vor allem nicht der Windows Explorer. Ich würde denken, dass VirtualProtect der beste Weg ist, wenn das Ziel darin besteht, den Vorgang vollständig abzubrechen, aber ich würde alles begrüßen, was funktioniert und verhindert, dass das Fenster auch nur im Geringsten sichtbar ist.
Code: Select all
extern "C" __declspec(dllexport) void SetGlobalHook()
{
_hmod = GetModuleHandle(L"DllPlusPlus"); // Get the handle of the current DLL
if (_hmod != NULL)
{
OriginalShellExecuteW = (ShellExecuteW_t)GetProcAddress(GetModuleHandle(L"shell32.dll"), "ShellExecuteW");
if (OriginalShellExecuteW != NULL)
{
DWORD oldProtect;
VirtualProtect((LPVOID)OriginalShellExecuteW, sizeof(LPVOID), PAGE_EXECUTE_READWRITE, &oldProtect);
// Replace the function pointer with the address of the hook
*(LPVOID*)&OriginalShellExecuteW = (LPVOID)HookedShellExecuteW;
VirtualProtect((LPVOID)OriginalShellExecuteW, sizeof(LPVOID), oldProtect, &oldProtect);
hShellHook = SetWindowsHookEx(WH_SHELL, ShellProc, _hmod, 0);
if (hShellHook == NULL)
{
DWORD error = GetLastError();
std::wofstream logFile("C:\\hook_error_log.txt", std::ios::app);
if (logFile.is_open())
{
logFile