Моя программа Hook C ++ не может выполняться в Visual Sudio - PullRequest
0 голосов
/ 01 июля 2019

Моя программа Hook C ++ не может выполняться в Visual Sudio Я новичок Моя программа Hook не может выполняться в Visual Studio, которую я обнаружил как Change Linker / System: Window или Console, и изменил Advanced / Entry Point: как основной, WinAPI и многие типы, и следовал инструкциям, но моя Visual Studio 2019 не может запускаться и сообщать как :

LNK2019 неразрешенный внешний символ _WinMain @ 16, указанный в функции "int __cdecl invoke_main (void)" (? Invoke_main @@ YAHXZ) LNK1120 1 неразрешенный внешний вид

Код C ++:

#include "Windows.h"

bool Hook(void* hookAddress, void* ourFunct, int len) {
    if (len > 5) {
        DWORD protection;
        VirtualProtect(hookAddress, len, PAGE_EXECUTE_READWRITE, &protection);

        DWORD relativeAddress = ((DWORD)ourFunct - (DWORD)hookAddress) - 5;

        *(BYTE*)hookAddress = 0xE9; //Jmp
        *(DWORD*)((DWORD)hookAddress + 1) = relativeAddress;

        DWORD temp;
        VirtualProtect(hookAddress, len, protection, &temp);

        return true;
    }
    else
    {
        return false;
    }
}

DWORD jmpBk;
void __declspec(naked) ourFunct() {
    __asm {
        sub eax, 0
        jmp[jmpBk]
    }
}

DWORD WINAPI MainThread(LPVOID param) {
    int hookLength = 8;
    DWORD hookAddress = 0x0D2269E;
    jmpBk = hookAddress + hookLength;

    if (Hook((void*)hookAddress, ourFunct, hookLength)) {
        MessageBoxA(0, "Fn", "fn", 0);
    }
    else
    {
        MessageBoxA(0, "Fail", "Fail", 0);
    }

    while (true) {
        if (GetAsyncKeyState(VK_END)) break;
        Sleep(50);
    }
    MessageBoxA(0, "Uninject", "Bye", 0);
    FreeLibraryAndExitThread((HMODULE)param, 0);

    return 0;
}

BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved) {
    switch (dwReason) {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, MainThread, hModule, 0, 0);
        break;
    }

    return TRUE;
}
...