Непонятный краш функции
Ситуация следующая. Инжектировал код в блокнот и вызвал ф-цию, которая в IAT ищет ф-цию по имени.
PIMAGE_THUNK_DATA originalFirstThunk = NULL, firstThunk = NULL;
originalFirstThunk = (PIMAGE_THUNK_DATA)((DWORD_PTR)imageBase + importDescriptor->OriginalFirstThunk);
firstThunk = (PIMAGE_THUNK_DATA)((DWORD_PTR)imageBase + importDescriptor->FirstThunk);
while (originalFirstThunk->u1.AddressOfData != NULL)
{
functionName = (PIMAGE_IMPORT_BY_NAME)((DWORD_PTR)imageBase + originalFirstThunk->u1.AddressOfData);
MessageBoxA(NULL, "1", "Caption", MB_OK);
if (std::string(functionName->Name).compare("GetProcAddress") == 0) // <-- crash
{
MessageBoxA(NULL, "Found", "Caption", MB_OK);
}
else MessageBoxA(NULL, "Not Found", "Caption", MB_OK);
++originalFirstThunk;
++firstThunk;
}
На этапе сравнения приложение молча крашится. Т.е. MessageBox 1 вызывается, а Found или Not Found уже не показывает. Подскажите, в чем может быть проблема? В какую сторону копать?