Главная страница
    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]

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



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

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

Наверх





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


15-1166586442
Slider007
2006-12-20 06:47
2007.01.14
С днем рождения ! 20 декабря


2-1167143408
vain
2006-12-26 17:30
2007.01.14
Запуздыривание в трей.


15-1166552703
PHPDeveloper
2006-12-19 21:25
2007.01.14
Upload файла через HTML форму из Delphi


2-1166708201
RomanH
2006-12-21 16:36
2007.01.14
Сортировка в JvDBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский