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

Как получить адрес функции из удаленного процесса ?

ymmfty0

HDD-drive
Пользователь
Регистрация
28.10.2022
Сообщения
29
Реакции
5
Приветствую всех, как я могу получить адрес функции из длл , которая импортирована в удаленном процессе.
Я вот так получаю саму dll
C++:
HMODULE GetDllModule(HANDLE hProcess)
{
    HMODULE hMods[1024];
    DWORD cbNeeded;
    unsigned int i;

    if (EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded))
    {
        for (i = 0; i < (cbNeeded / sizeof(HMODULE)); i++)
        {
            TCHAR szModName[MAX_PATH];
 
            if (GetModuleBaseNameW(hProcess, hMods[i], szModName,
                sizeof(szModName) / sizeof(TCHAR)))
            {
                if (wcscmp(szModName, L"name.dll") == 0) {
                    return hMods[i];
                }
            }
        }
    }

    DWORD dwError = GetLastError();
    printf("[!] EnumProcessModules failed with error code %d\n", dwError);

    return NULL;
}

Имея дескриптор , как я могу получить адрес нужной мне функции из этой dll ? Можете направить в нужную сторону. Всем спасибо, всего вам хорошего
 
Как обычно через GetProcAddress, но подгрузить её себе в процесс.. Если используется DinamicBase или dll будет загружена в твой процесс по другому адресу, отличному от того что ты получил в ф-ции GetDllModule - то внести коррективы в адрес нужной функции, полученной через GetProcAddress.
 
Как обычно через GetProcAddress, но подгрузить её себе в процесс.. Если используется DinamicBase или dll будет загружена в твой процесс по другому адресу, отличному от того что ты получил в ф-ции GetDllModule - то внести коррективы в адрес нужной функции, полученной через GetProcAddress.
Спасибо
 
Если кому надо, вот код

C++:
FARPROC GetRemoteProcAddress(HMODULE hRemoteModule, LPCSTR lpProcName) {
    HMODULE hLocalModule = LoadLibrary(TEXT("name.dll")); // Получение базового адреса нужной длл, в текущем процессе
    FARPROC lpLocalFunc = GetProcAddress(hLocalModule, lpProcName); //Получение смещения до нужной функции в текущем процессе
    FARPROC lpRemoteFunc = (FARPROC)((LPBYTE)hRemoteModule + ((LPBYTE)lpLocalFunc - (LPBYTE)hLocalModule)); //Получение адреса функции в удаленном процессе
    FreeLibrary(hLocalModule);
    return lpRemoteFunc;
}
 


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