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

C/C++ GetModuleFileNameW возвращает неверное значение

awaken1337

RAID-массив
Пользователь
Регистрация
13.12.2019
Сообщения
82
Решения
1
Реакции
12
Гарант сделки
1
Обнаружил проблему при отладке данного кода:
C++:
HMODULE hNtdll = GetModuleHandleW(L"ntdll.dll");

WCHAR wcNtdllPath[MAX_PATH];
ZeroMemory(wcNtdllPath, sizeof(wcNtdllPath));

GetModuleFileNameW(hNtdll, wcNtdllPath, sizeof(wcNtdllPath) / sizeof(WCHAR));
Возвращаемое значение из GetModuleFileNameW очень редко, но бывает таким = "ws\\SYSTEM32\\ntdll.dll" вместо "C:\\Windows\\SYSTEM32\\ntdll.dll"
Кто знает из-за чего так случается и как сделать что бы путь всегда получался нормальным?
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну как минимум GetModuleFilenameW в качестве размера буффера принимает размер в символах, а не в байтах.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Это еще хуже, лол! Делить, а не умножать.
Исправил, спасибо, но всё равно примерно раз в 100 запусков - 2-3 будут с неправильным выводом
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован


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