Здравствуйте alfarn, вы писали:
A>Ну а если серьезно, то как?
Когда вдруг кто-то находит возможность получить синий экран из user-mode приложения, это очень быстро попадает в ntbugtraq, Microsoft выпускает очередной QFE и такая возможность пропадает. Зайди на www.ntbugtraq.com поищи чего-нибудь из свеженького, может получится.
Здравствуйте Alex Fedotov, вы писали:
AF>Здравствуйте alfarn, вы писали:
A>>Ну а если серьезно, то как?
AF>Когда вдруг кто-то находит возможность получить синий экран из user-mode приложения, это очень быстро попадает в ntbugtraq, Microsoft выпускает очередной QFE и такая возможность пропадает. Зайди на www.ntbugtraq.com поищи чего-нибудь из свеженького, может получится.
У меня один молодой орел написал порогу которая на GUI-вызывах лЭгко валила NT 4 SP 6 и W2k. Предполагаю что этой глюке лет пять.
Точного кода не помню, но примерно дела обстояли так:
Он открывал поп-ап-менюшу, одновременно вызывал КапчурКрыс и обробатывал соответствующие сообщения... Ну, и на некотором цикле рекурсии ... бАаабах и NT-я слетала в лучшем виде. Проверяли на двух машинах. Они были совершенно разные, но может быть, что имели одинаковые драйвера Logitech-крысс. Хотя по-моему у машины на которой крутилась 4-я NT драйвера все же были MS-ными.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте alfarn, вы писали:
A>С помощью какого кода можно вызвать синий экран?
А чем вызван вопрос? Если просто пошутить, то можно и screen saver скачать с http://www.sysinternals.com/ntw2k/freeware/bluesave.shtml :)
А если серьезно, то в VWin32.VxD (стандартный системный драйвер) содержится нужная функция: _VWIN32_BlueScreenPopup. Или более стандартно, можно взаимодействовать с пользователем через BSOD с помощью SHELL_SYSMODAL_Message. Все это доступно на платформе Win9x.
Здравствуйте, BlackHeretic, Вы писали:
BH>Esli ne oshibajus'
BH>
BH>printf("\t\t\b\b\b\b");
BH>
На некоторых вариациях нужно эту фигню в вечный цикл вставлять, бо с первого раза часто не работает. А так — способ вернейший — убиение системного процесса csrss.exe, приводящего к краху системы
Здравствуйте, Alex Fedotov, Вы писали:
AF>Здравствуйте alfarn, вы писали:
A>>Ну а если серьезно, то как?
AF>Когда вдруг кто-то находит возможность получить синий экран из user-mode приложения, это очень быстро попадает в ntbugtraq, Microsoft выпускает очередной QFE и такая возможность пропадает. Зайди на www.ntbugtraq.com поищи чего-нибудь из свеженького, может получится.
Alex, неужели это правда? Я раза три умудрился вызвать BSOD, все три через — GDI
Что-то типа PolyPolyline. ОС — WindowsXP.
Здравствуйте, alfarn, Вы писали:
A>С помощью какого кода можно вызвать синий экран?
про это — много уже написано... а вот я знаю, как сделать жесткую перезагрузку без вопросов... системные требования: Windows XP/DirectX 9 with Managed Extentions/C#...
... << RSDN@Home 1.1 alpha 1 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте, Hacker_Delphi, Вы писали:
H_D>Здравствуйте, alfarn, Вы писали:
A>С помощью какого кода можно вызвать синий экран?
H_D>про это — много уже написано... а вот я знаю, как сделать жесткую перезагрузку без вопросов... системные требования: Windows XP/DirectX 9 with Managed Extentions/C#...
ХМ, а я знаю как сделать это без таких суровых требований — любой 386 и выше проц с любой Windows подойдет вполне..
... << RSDN@Home 1.0 beta 7a >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Здравствуйте, Valerio, Вы писали:
V>Здравствуйте, Hacker_Delphi, Вы писали:
H_D>>Здравствуйте, alfarn, Вы писали:
A>>С помощью какого кода можно вызвать синий экран?
H_D>>про это — много уже написано... а вот я знаю, как сделать жесткую перезагрузку без вопросов... системные требования: Windows XP/DirectX 9 with Managed Extentions/C#... V>ХМ, а я знаю как сделать это без таких суровых требований — любой 386 и выше проц с любой Windows подойдет вполне..
нет, ты не понял... я могу сделать это из МЕНЕДЖЕТ кода... просто не на XP не проверял...
... << RSDN@Home 1.1 alpha 1 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте, BlackHeretic, Вы писали:
BH>Здравствуйте, alfarn, Вы писали:
A>>С помощью какого кода можно вызвать синий экран?
BH>Esli ne oshibajus'
BH>
BH>printf("\t\t\b\b\b\b");
BH>
I vse vremja s zapozdaniem predupregdaju...
U sebja ne delaite — u nekotorih grohaetsja vlot' do neobhodimosti pereformatirovat' vint...
Vidimo tam nachinajutsja dovol'no sluchainie sobitija...
Здравствуйте, Hacker_Delphi, Вы писали:
H_D>>>про это — много уже написано... а вот я знаю, как сделать жесткую перезагрузку без вопросов... системные требования: Windows XP/DirectX 9 with Managed Extentions/C#... H_D>нет, ты не понял... я могу сделать это из МЕНЕДЖЕТ кода... просто не на XP не проверял...
Здравствуйте, Hacker_Delphi, Вы писали:
H_D>Здравствуйте, Kluge, Вы писали:
K>>Здравствуйте, Hacker_Delphi, Вы писали:
K>>Забавно. И как это его так?
H_D>в Direct3D выполняем такой вот код: H_D>
H_D>все, слет гарантирован... локализовал ошибку с четвертой попытки...
Братва — все очень просто на самом деле
Делаете так: пишете простейший драйвер, одна функция DriverEntry — а в теле тоже одна функция KeBugCheckEx — она то и вызывает Blue Screen Of Death
Потом пишете w32 приложение которое динамически загружает этот драйвер и запускает его!
Привожу свой собственны код, под платформой NT работает гарантированно!!!
ДРАЙВЕР:
#include <ntddk.h>
NTSTATUS DriverEntry( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath )
{
// Oups!!! We have just sent our belowed Windows to death. :-)))
KeBugCheckEx( ( ULONG ) NULL, ( ULONG_PTR ) NULL, ( ULONG_PTR ) NULL, ( ULONG_PTR ) NULL, ( ULONG_PTR ) NULL );
};
Win32 ПРИЛОЖЕНИЕ:
#include <windows.h>
#include <assert.h>
static const char* m_DriverName = "oups.sys";
/***********************************************************************************************************
Name: LoadDriver
Description: This function is to load driver dinamically and start it. This procedure should send our
Windows to blue screen of death!!!
Note:
Arguments:
Return Value:
***********************************************************************************************************/void __declspec( noreturn ) LoadDriver() throw()
{
SC_HANDLE hSCManager = NULL;
SC_HANDLE hService = NULL;
// The OpenSCManager function establishes a connection to the service control manager on the
// specified computer and opens the specified service control manager database
hSCManager = OpenSCManager ( NULL, NULL, SC_MANAGER_ALL_ACCESS );
assert( hSCManager != NULL || hSCManager != INVALID_HANDLE_VALUE );
// Compile full name of the driver oups.sys, it is assumed to be placed in the oups.exe directory
LPTSTR m_FullDriverName = static_cast< LPTSTR > ( malloc( sizeof( TCHAR ) * 256 ) );
GetCurrentDirectory( 256, m_FullDriverName );
strcat( m_FullDriverName, "\\" );
strcat( m_FullDriverName, m_DriverName );
// The CreateService function creates a service object and adds it to the specified service
// control manager database
hService = CreateService( hSCManager, m_DriverName, m_DriverName, SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, m_FullDriverName,
NULL, NULL, NULL, NULL, NULL );
if ( hService != NULL || hService != INVALID_HANDLE_VALUE )
{
// The OpenService function opens an existing service, it means that The CreateService function
// has been failed
hService = OpenService( hSCManager, m_DriverName, SERVICE_ALL_ACCESS );
assert( hService != NULL || hService != INVALID_HANDLE_VALUE );
};
// When a driver service is started, the StartService function does not return until the device driver
// has finished initializing. Oups! - our driver will never finish its initialization! :-)))
StartService( hService, 0, NULL );
// It's a pitty that the system will never reach this line! :-)))
// and will never get out of this routine! :-)
free( m_FullDriverName );
CloseServiceHandle ( hService );
CloseServiceHandle ( hSCManager );
};
INT WINAPI WinMain( IN HINSTANCE hInstance, IN HINSTANCE hPrevInstance, IN LPSTR lpCmdLine, IN int nShowCmd )
{
LoadDriver();
return ( TRUE );
};
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Здравствуйте, alfarn, Вы писали:
A>С помощью какого кода можно вызвать синий экран?
А можно так и жто документированно
Windows 2000 позволяет прервать свою работу, вызвав тем самым синий экран смерти и сгенерировав дамп памяти Memory.dmp, при помощи двойного нажатия клавиши Scroll Lock при удержанной правой клавише Ctrl. Для использования этой функции необходимо выполнить следующие изменения в реестре:
1. Запустите редактор реестра (regedit.exe)
2. Откройте ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
3. Создайте новый ключ с именем CrashOnCtrlScroll (Edit — New — DWORD)
4. Дважды щелкните на созданном ключе и укажите в нем любое ненулевое значение, например 1. Нажмите ОК
5. Закройте редактор реестра и перегрузите систему
Теперь если вы нажмете правый Ctrl, и, удерживая его, дважды нажмете Scroll Lock, система прекратит свою работу и выдаст сообщение о MANUALLY_INITIATED_CRASH (0xE2). Эта комбинация может сработать в тех ситуациях, когда не действует Ctrl+Alt+Del.
Да все это конечно хорошо, как быть с тем если нужно незаметно для пользователя умертвить его компьютер, ты же его не заставишь нажать Ctrl+Scroll+Scroll
Плюс вторая проблема, мой предыдущий код работает только под админом, под юзером система не позволляет устанавливать драйвера или динамически их загружать как сервисы и запускать!
Нужно придумать универсальный способ!
Мы — маньяки, должны помогать друг другу!
Re[9]: Как вызвать синий экран смерти?
От:
Аноним
Дата:
14.11.03 09:20
Оценка:
A_M>Да все это конечно хорошо, как быть с тем если нужно незаметно для пользователя умертвить его компьютер, ты же его не заставишь нажать Ctrl+Scroll+Scroll
A_M>Да все это конечно хорошо, как быть с тем если нужно незаметно для пользователя умертвить его компьютер, ты же его не заставишь нажать Ctrl+Scroll+Scroll
A_M>Плюс вторая проблема, мой предыдущий код работает только под админом, под юзером система не позволляет устанавливать драйвера или динамически их загружать как сервисы и запускать!
A_M>Нужно придумать универсальный способ!
А зачем это делать — . Кроме как получить полный(или другие варианты) дамп памяти.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Каким это образом! SendMessage или PostMessage отпадает сразу, нет hwnd и к тому же системный сервис (а именно он отвечает за обработку этой комбинации клавиш) неполучит этого сообщения, даже если бы ты знал ProcessID, что тоже нериально. Если ты думаешь, что ты поставишь глобальный системный хук на клавиатуру, и потом по команде сверху сформируешь кейсток с Ctrl+Scroll+Scroll и отправишь его дальше по цепочке фильтров вызвав CallNextHook — то это тоже несработает ( точно не знаю почему, связано с системными клавишами, сначала они обрабатываются внутренними механизмами системы, а затем передеются установленным хукам) т.е. передача Ctrl+Scroll+Scroll вниз по цепочке фильтров хуков невызовет желаемого результата, так как обрабочик (системный сервис) уже отработал и не ждет никаких клавиш.
Если ты сделал это программно будь добр подкинь код!
З>А зачем это делать — . Кроме как получить полный(или другие варианты) дамп памяти.
Фишка же не втом зачем это делать, а как это сделать!
А зачем есть масса причин ну ненравится тебе какой нибудь user, приконектился к своей проге по tcp/ip на его нашине и отправил винду в нирвану пользоваться там всякими RAdmin'ами это нам программерам не с руки!
Здравствуйте, Hacker_Delphi, Вы писали:
H_D>все, слет гарантирован... локализовал ошибку с четвертой попытки...
Ну это еще от драйверов зависит. У NVidia, например, BSOD
запросто получается если создать в видеопамяти текстурку, и там же просто
поверхность большего размера, чем текстурка. И сблитить одну в другую.
Здравствуйте, Alex_Mistery, Вы писали:
A_M>А зачем есть масса причин ну ненравится тебе какой нибудь user, приконектился к своей проге по tcp/ip на его нашине и отправил винду в нирвану пользоваться там всякими RAdmin'ами это нам программерам не с руки!
Здравствуйте, ABCDEFG, Вы писали:
ABC>Здравствуйте, alfarn, Вы писали:
A>>С помощью какого кода можно вызвать синий экран?
ABC>А его никак не зовут, он сам приходит.