Здравствуйте, EreTIk, Вы писали:
ETI>Re[5]: Блокировка запуска приложенийАвтор: Andrew.W Worobow
Дата: 18.01.07
Натолкнулся на такую странную штуку. Есть приложение, которое падает на моей dll-ке (Это MS VS 2005)
Падает так.
Я хотел для начала просто логировать приложения.
В результате dll-ка падала при открытии файла в fopen(_tfopen).
Я решил вывести отладочную информацию в MessageBox, оно тоже упало.
Стал тогда разбираться под дебагом, выяснил следующее:
MessageBox (это user32) обращается через таблицу импорта к LoadStringBaseExW, которая находится в kernel32.dll, но почему-то в таблице импорта на тот момент ноль (там целый блок нулей), от этого MessageBox падает, call по нулевому адресу. При этом GelModuleHandle(TEXT("kernel32")) валиден, и с него можно снять GetProcAddress для LoadStringBaseExW (к теме импорта это отношения не имеет, просто проверил, что модуль и функция присутствуют). С fopen ошибка возникает в другом месте, но подозреваю ошибка та же.
Что это такое? И как хотя бы понять, что нельзя звать MessageBox/fopen? Лезть в таблицу импорта программно не хочется.
Почему у других приложений всё ок (это при варианте того, что AppSecDll грузится самой первой, потому что так задумано, поэтому других dll-ей нету ещё)?