MessageBox не вызывается из DllMain после инъекции - PullRequest
0 голосов
/ 22 января 2020

Цель

Я пытаюсь inject an x64 DLL в w3wp.exe процесс (рабочий процесс IIS) для отладки моей DLL с Visual Studio.

Что я сделал

Я использую Extreme Injector V3 для этого. После выбора отладочной сборки моей DLL и процесса w3wp.exe из списка процессов в Extreme Injector, я нажимаю Inject, и меня приветствует MessageBox, сообщающий, что внедрение успешно завершено.

Что Я ожидаю

Я должен увидеть MessageBoxA(0, "injected", 0, 0) от DllMain. Однако я не вижу такой вещи!

Код DLL

int __stdcall DllMain(HMODULE base, unsigned long reason, void* args)
{
    if (reason == DLL_PROCESS_ATTACH)
    {
        return 1;
    }
    return 0;
}

1 Ответ

0 голосов
/ 18 апреля 2020

Что я ожидаю, я должен увидеть MessageBoxA (0, "injected", 0, 0) из DllMain. Однако я не вижу такой вещи!

Ваш код не вызывает MessageBox (), он просто возвращает 1 при инъекции.

Несмотря на то, что это не рекомендуется, если вы Вы просто делаете это для эксперимента, код должен выглядеть следующим образом:

int __stdcall DllMain(HMODULE base, unsigned long reason, void* args)
{
    if (reason == DLL_PROCESS_ATTACH)
    {
        MessageBoxA(0, "injected", 0, 0);
    }
    return 0;
}

Если это не сработает, вам нужно попробовать другой инжектор, убедитесь, что ваш инжектор работает от имени администратора.

Если w3wp.exe работает как NT AUTHORITY \ SYSTEM, вам могут потребоваться более высокие разрешения

...