Непонятный краш функции

Ситуация следующая. Инжектировал код в блокнот и вызвал ф-цию, которая в 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 уже не показывает. Подскажите, в чем может быть проблема? В какую сторону копать?


Ответы (0 шт):