• XSS.stack #1 – первый литературный журнал от юзеров форума

Как загрузить user32.dll через Heavens Gate?

IPirateS6

(L3) cache
Пользователь
Регистрация
02.06.2020
Сообщения
211
Реакции
107
Приветствую. Пытаюсь грузить user32.dll через heavens gate из-под wow64 проги (код ниже прилагается). Парадокс в том что такие дллки например как kernel32.dll, ws2_32.dll и advapi32.dll грузятся без проблем, а вот например user32.dll и ole32.dll крашат прогу.
Я вначале подумал что дело в том что я через LdrLoadDll гружу и видимо чёто не учёл и чтобы наверняка было уже взял обычный LoadLibraryA, но результат тот же.
Вопрос: что делать чтобы работало?)

*Подозреваю нужно подгрузить какие-то базовые 64-битные дллки необходимые для работы user32.dll . Кто знает какие?🙃
*pRtlInitUnicodeString, pLdrLoadDll, pLoadLibraryA, hKernel32 проверял, с ними всё ок. Debug выводится при kernel32.dll, при user32.dll нет, ибо прога крашится.
C++:
//heavens gate от rew0lf
    //Если кто-то решит собрать у себя не забудьте вначале проги InitWow64ext()  =)

    DWORD64 hNtdll = GetModuleHandle64(L"ntdll.dll");

    DWORD64 pLdrLoadDll = GetProcAddress64(hNtdll, (char*)"LdrLoadDll");
    DWORD64 pRtlInitUnicodeString = GetProcAddress64(hNtdll, (char*)"RtlInitUnicodeString");
    
    HMODULE hKernel32 = 0;
    UNICODE_STRING unicodestring;
    X64Call(pRtlInitUnicodeString, 2, (DWORD64)&unicodestring, (DWORD64)L"kernel32.dll");
    X64Call(pLdrLoadDll, 4, (DWORD64)0, (DWORD64)0, (DWORD64)&unicodestring, (DWORD64)&hKernel32);

    DWORD64 pLoadLibraryA = GetProcAddress64((DWORD64)hKernel32, (char*)"LoadLibraryA");
    X64Call(pLoadLibraryA, 1, (DWORD64)"ws2_32.dll");

    MessageBoxA(0, "Debug", 0, 0);
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх