Как узнать к какому процессу привязан мой dll? - PullRequest
0 голосов
/ 01 апреля 2019

Прежде чем мой dll-файл внедряется в процесс, я хочу проверить, действительно ли это процесс, который я хочу внедрить.Есть ли способ добиться этого, чтобы я мог прервать процесс впрыска, если он неправильный?Заранее благодарю за любую помощь!

int APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID reserved)
{
    if (reason == DLL_PROCESS_ATTACH)
    {
        if (process == theprocessiwant)
        {
            //call my stuff....
        }
    }
        return true;
}

1 Ответ

0 голосов
/ 01 апреля 2019

Хорошо, спасибо за ваши предложения, я нашел рабочий путь!

DWORD targetProcessId;
int APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID reserved)
{
    PROCESSENTRY32 entry;
    entry.dwSize = sizeof(PROCESSENTRY32);

    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

    if (Process32First(snapshot, &entry) == TRUE)
    {
        while (Process32Next(snapshot, &entry) == TRUE)
        {
            if (_stricmp(entry.szExeFile, "target.exe") == 0)
            {
                targetProcessId = entry.th32ProcessID;
            }
        }
    }
    CloseHandle(snapshot);

    if (reason == DLL_PROCESS_ATTACH)
    {
        if (GetCurrentProcessId() == targetProcessId)
        {
           //MY Code
        }
    }

    return true;
}
...