Доброго времени суток.
Столкнулся с такой странной проблемой, загружаю Dll из памяти, используя
этотАвтор: Виталий
Дата: 09.01.04
код.
Внутри этой dll у меня есть код вида:
try
{
DoSomething(); // throw std::exception() отсюда
}
catch (std::exception&)
{
return;
}
catch (...)
{
return;
}
И это исключение не перехватывается, ни в 1-м, ни во 2-м catch'e. Обернул в try\catch и вызов функции из dll, эффект остался тот-же, приложение падает из-за неперехваченного исключения. В отладчике вывод вида "Unhandled exception at 0x7558b727 in hello.exe: Microsoft C++ exception: std::exception at memory location 0x0018f588.". При этом если грузить Dll с диска то все ок. Почему так происходит и как это исправить?) Спасибо за ответы.
Здравствуйте, InstantI, Вы писали:
II>Доброго времени суток.
II>используя этотАвтор: Виталий
Дата: 09.01.04
код.
там предупреждение есть:
Beware of bugs.
II>Доброго времени суток.
II>Столкнулся с такой странной проблемой, загружаю Dll из памяти, используя этотАвтор: Виталий
Дата: 09.01.04
код.
Этот код не добавляет загруженную длл в PEB ldr list, результат — GetModuleFileName, GetModuleHandle etc работать не будут. + NtQueryVirtualMemory будет отдавать "неадекватные" данные на адресах этой длл.
Не говоря уж о том что в приведенном коде загрузчика возможно тупо есть какой то баг.