Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Теория программирования > Игры разума
Перезагрузить страницу BSOD (Blue Screen Of Death) как написать код
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию BSOD (Blue Screen Of Death) как написать код - 30.09.2004, 17:52

Эта задача уже всплывала в одной из тем, но была благополучно забыта.
Итак, требуется написать код, который гарантированно вызывал бы BSOD на Windows любой версии.
Очень желаетльно, чтобы код был пользовательского режима (потому что для драйвера это задача достаточно тривиальная).
Ответить с цитированием
  (#2 (permalink)) Старый
nop nop вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.03.2004
По умолчанию 01.10.2004, 09:29

на nt4,w2k,xp почти(!) всегда BSOD можно получить выполнив приблизительно следующий код

Код:
printf("ttbbbb");
для "надежности" лучше в вечном цикле

P.S. А как эта задача согласуется с правилами: "Принимаются только действительно интересные теоретические задачи, подразумевающие интересные и нетривиальные решения." ?
Ответить с цитированием
  (#3 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 01.10.2004, 13:23

Цитата:
Originally posted by nop
[b]на nt4,w2k,xp почти(!) всегда BSOD можно получить выполнив приблизительно следующий код

Код:
printf("ttbbbb");
для "надежности" лучше в вечном цикле
Интересно, и почему же такой код может привести к синему экрану?


Цитата:
Originally posted by nop
[b]P.S. А как эта задача согласуется с правилами: "Принимаются только действительно интересные теоретические задачи, подразумевающие интересные и нетривиальные решения." ?
Легко. Во-первых, ты сам написал, что предложенное тобой решение работает ПОЧТИ. А надо решение надежное. И обоснованное теоретически.
Я тут неинтересного и тривиального решения пока не вижу.
Ответить с цитированием
  (#4 (permalink)) Старый
nop nop вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.03.2004
По умолчанию 01.10.2004, 13:40

Интересно, и почему же такой код может привести к синему экрану?


А ты проверь

Цитата:
Легко. Во-первых, ты сам написал, что предложенное тобой решение работает ПОЧТИ. А надо решение надежное. И обоснованное теоретически.
Я тут неинтересного и тривиального решения пока не вижу.
Так ЭТО надо еще и теоритически обосновать ? умирает csrss.exe из-за ошибки в реализации. Какая тут может быть теория - находить ошибки программистов в разных проектах. А "Почти" это потому что у меня нет возможности проверить под всеми версимя с резными сервиспаками.

Кстати, вопрос некорректен - BSOD это термин nt систем.
Ответить с цитированием
  (#5 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 01.10.2004, 13:53

Цитата:
Originally posted by nop
[b]Интересно, и почему же такой код может привести к синему экрану?


А ты проверь
Ок. Непременно проверю.

Цитата:
Originally posted by nop
[b]Так ЭТО надо еще и теоритически обосновать ? умирает csrss.exe из-за ошибки в реализации. Какая тут может быть теория - находить ошибки программистов в разных проектах. А "Почти" это потому что у меня нет возможности проверить под всеми версимя с резными сервиспаками.
Имеется в виду "законный" способ, не связанный с дырами Windows. Думаешь, такого нет?

Цитата:
Originally posted by nop
[b]Кстати, вопрос некорректен - BSOD это термин nt систем.
http://iclub.nsu.ru/jargon/frames/B/blue-s...n-of-death.html
Кстати, эсли это термин nt-систем, то как ЭТО называлось на 9x-системах?
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
nop nop вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.03.2004
По умолчанию 01.10.2004, 14:04

Цитата:
Originally posted by Garik
[b]http://iclub.nsu.ru/jargon/frames/B/blue-s...n-of-death.html
Кстати, эсли это термин nt-систем, то как ЭТО называлось на 9x-системах?
Ладно, все равно это жаргонное название. Но BSOD под 9x это совсем иное, чем BSOD под NT. И логичнее было бы разделять их.
Ответить с цитированием
  (#7 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 01.10.2004, 14:11

Цитата:
Originally posted by nop
[b]Ладно, все равно это жаргонное название. Но BSOD под 9x это совсем иное, чем BSOD под NT. И логичнее было бы разделять их.
Насчет жаргонного - я нашел термин "Blue screen" в MSDN.
Насчет того, что это разные вещи - согласен. И можно их разделить.
Насколько я знаю, вызвать крах системы Win9x - задача достаточно тривиальная. Самое интересное - это "законно" вызвать крах WinNT-систем.
Ответить с цитированием
  (#8 (permalink)) Старый
nop nop вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.03.2004
По умолчанию 01.10.2004, 14:23

Цитата:
Originally posted by Garik
[b]Насчет жаргонного - я нашел термин "Blue screen" в MSDN.
Ну мы про "BSOD" говорили - он тоже в MSDN встречается, причем везде в контексте nt.
А с остальным согласен.

Вот еще придумалось:
Если есть права LocalSystem, то можно с помощью MoveFileEx и MOVEFILE_DELAY_UNTIL_REBOOT удалить что-то вроде smss.exe или
csrss.exe, или любой критический для системы файл и перезагрузиться.
Ответить с цитированием
  (#9 (permalink)) Старый
nop nop вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.03.2004
По умолчанию 01.10.2004, 14:27

Можно еще в boot.ini добавить флаг '/BREAK'
(Правда при наличии '/DEBUG' это работать не будет, но по умолчанию его и нет)
Опять же нужен доступ на изменение boot.ini
Ответить с цитированием
  (#10 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 01.10.2004, 14:44

С перезагрузкой - это уже неинтересно!
Надо моментально!
Ответить с цитированием
  (#11 (permalink)) Старый
Ex Ex вне форума
Member
 
Сообщений: 411
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.07.2003
По умолчанию 01.10.2004, 15:35

Цитата:
Originally posted by Garik
[b]Самое интересное - это "законно" вызвать крах WinNT-систем.
"Законно" - это без использования различных "дыр" и недокументированных функций?
Ответить с цитированием
  (#12 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 01.10.2004, 15:41

Цитата:
Originally posted by Ex+-->
Цитата:
<!--QuoteBegin-Garik
Цитата:
[b]Самое интересное - это "законно" вызвать крах WinNT-систем.
"Законно" - это без использования различных "дыр" и недокументированных функций?
Точно. Но это идеальный вариант. Неизвестно еще, возможно ли это...
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 05.10.2004, 10:22

Цитата:
"Законно" - это без использования различных "дыр" и недокументированных функций?
Экран же выдается системой - значит, для этого есть специальная функция. Не удивлюсь, если в м*крософт и в пользовательский режим догадались пропихнуть что-нибудь типа
void RaiseBSOD(int ErrCode)
Ответить с цитированием
  (#14 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 05.10.2004, 12:29

Цитата:
Originally posted by Dian
[b]Экран же выдается системой - значит, для этого есть специальная функция. Не удивлюсь, если в м*крософт и в пользовательский режим догадались пропихнуть что-нибудь типа
void RaiseBSOD(int ErrCode) :lol:
Такая функция действительно есть: KeBugCheckEx().
Однако это функция ядра, и вызвать ее из приложения не получится. Так что этот способ отпадает.
Есть еще идеи?
Ответить с цитированием
  (#15 (permalink)) Старый
Ikshot Ikshot вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.06.2002
По умолчанию 09.10.2004, 08:02

Меня больше всего порадовала формулировка

Цитата:
Originally posted by Garik
[b]Имеется в виду "законный" способ, не связанный с дырами Windows. Думаешь, такого нет?
Я лично считаю, что если бы в Вин не было дыр, то эта хрень никогда и не появлялась бы - зачем BSOD на системе, которая без дыр и работает (сама по себе) без ошибок? Нет, ну конечно ошибка даже на безошибочной системе может быть спровоцирована ошибкой оборудования или стороннего приложения, но это нарушает требование об универсальности способа. Так что ИМХО не может быть способа, не связанного с дырами. Понимаю, что перевожу вопрос в филосовское русло, но больно уж прикольно.

Кстати вспомнилось (не BSOD, но весело) - я когда еще курсе на 3-ем учился зачем-то мне нужно было написать программку, которая по таймеру рисует на экране много много линий разными цветами (что-то типа скринсейвера). То есть я в цикле постоянно вызывал перерисовку окна, а в ней создавал кисть, рисовал линию и удалял кисть. Все бы ничего, но я перепутал 2 строки местами:
Код:
функция перерисовки()
{
   создать кисть
   выбрать кисть
   нарисовать линию
   стереть кисть
   выбрать системную кисть
}
ну и дальше по кругу. Как можно заметить - я удаляю кисть выбранную в контексте в данный момент, что неправильно, а поскольку функция выполнялась очень часто... очень интересно было наблюдать за происходящим в Выне - через несколько секунд после запуска, перестали открываться окна, потом - пропали настройки шрифтов - везде все переключилось на системный, ну а после этого хрясь и автоматическое вырубание компа...

Кстати по поводу KeBugCheckEx() и иже с ней - я не удивился бы даже, если бы была функция типа
void CrashWithoutReasonAndWithoutExplainingReason();
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с Blue-ray Voenur Накопители 1 02.05.2011 23:41
Что такое blue-ray? ww01031977 Любые вопросы от новичков 16 30.03.2011 20:50
Blue Screen of Death Psylex Windows 7 2 28.11.2010 04:53
blue screen golova Windows 7 15 20.11.2010 12:43
Blue Screen при выделении более 800 мб памяти svz Память 7 04.07.2010 03:01
Blue-ray плеер за 200$ gnomon Новости 0 11.01.2009 11:21
Death screensaver создание сабжа Dian Зацените! 16 06.08.2008 14:33
Blue ray Koshelkov Софт и программы 11 02.04.2008 03:24
Blue Air MAX ALEX777 Моддинг 41 04.12.2007 17:52
Вызов BSOD Blue Screen Of Death в Win9x Anonymous Delphi 9 24.12.2003 01:36



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов