Kokos Papiros
Сообщений: 48
Оценки: 0
Присоединился: 2009-11-14 03:29:01.996666
|
Около 3- 4-х лет назад была открыта неким хакером из Украины уязвимость MessageBox. Тогда она всполыхнула весь хак-мир и так же быстро угасла(чёрт возьми этих т(д)ушителей прамени.) Полторы недели назад я снова , совершенно случайно наткнулся…и….законтачил!. XP-3 начала выходить через 5-ть запусков, XP-4, што-то около 7-ми. Копипаст с убитого в 2007 году сайта: "поступила информация о том, что была обнаружена критическая ошибка в ядре Windows NT. Она вызывает исключение в системных сервисах или ядре Windows на следующих платформах: XP (все SP), XP 64bit, и Vista. Ошибка находится в коде драйвера win32 подсистемы, и ее можно вызвать не очень редкой API функцией – MessageBox: #include <Windows.h> int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { char bug [] = "\\??\\C:\\"; for(int i = 0; i < 100; i ++) ::MessageBoxA(0, bug, bug, MB_SERVICE_NOTIFICATION); return 0; } Выполнение этого кода очень быстро выводит систему из строя. Код может выдать BSOD, может вызвать в одном из системных сервисов исключение. В любом случае стабильность системы будет нарушена. Не сложно догадаться, что все дело конечно в MessageBox!… и как вы заметили все дело во флаге MB_SERVICE_NOTIFICATION. Обязательное условие вызова исключения – содержимое “\\??\\”. Скорее всего, один MessageBox с 100% не убьет систему, но содержащаяся ошибка таки имеет место, и несколько вызовов (до 10) приведут к результату. Текст сообщения не отвечает ожидаемому “\??\”… В лучшем случае, MessageBox отобразит данные по какому-то случайному указателю. Иногда это и приводит к исключению и падению процессов или системы в целом. Ваша реакция…?
|