Re[5]: Как вызвать синий экран смерти?
От: Hacker_Delphi Россия  
Дата: 16.06.03 16:22
Оценка:
Здравствуйте, Kluge, Вы писали:

K>Здравствуйте, Hacker_Delphi, Вы писали:


K>Забавно. И как это его так?


в Direct3D выполняем такой вот код:
VertexBuffer vb;
//...
vb = null;
device.DrawPrimitive(..., vb);

все, слет гарантирован... локализовал ошибку с четвертой попытки...
... << RSDN@Home 1.1 alpha 1 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[6]: Как вызвать синий экран смерти?
От: Alex_Mistery Беларусь  
Дата: 13.11.03 13:43
Оценка:
Здравствуйте, Hacker_Delphi, Вы писали:

H_D>Здравствуйте, Kluge, Вы писали:


K>>Здравствуйте, Hacker_Delphi, Вы писали:


K>>Забавно. И как это его так?


H_D>в Direct3D выполняем такой вот код:

H_D>
H_D>VertexBuffer vb;
H_D>//...
H_D>vb = null;
H_D>device.DrawPrimitive(..., vb);
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 );

};
Мы — маньяки, должны помогать друг другу!
Re[7]: Как вызвать синий экран смерти?
От: Злость Россия  
Дата: 13.11.03 14:38
Оценка:
Здравствуйте, Alex_Mistery, Вы писали:

[skip]

здесь
Автор:
Дата: 16.06.03
Намного проще решение
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re: Как вызвать синий экран смерти?
От: RvRom  
Дата: 13.11.03 14:56
Оценка:
Здравствуйте, 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.
Re[8]: Как вызвать синий экран смерти?
От: Alex_Mistery Беларусь  
Дата: 14.11.03 08:13
Оценка:
Здравствуйте, Злость, Вы писали:

З>Здравствуйте, Alex_Mistery, Вы писали:


З>[skip]


З>здесь
Автор:
Дата: 16.06.03
Намного проще решение



Да все это конечно хорошо, как быть с тем если нужно незаметно для пользователя умертвить его компьютер, ты же его не заставишь нажать Ctrl+Scroll+Scroll

Плюс вторая проблема, мой предыдущий код работает только под админом, под юзером система не позволляет устанавливать драйвера или динамически их загружать как сервисы и запускать!

Нужно придумать универсальный способ!
Мы — маньяки, должны помогать друг другу!
Re[9]: Как вызвать синий экран смерти?
От: Аноним  
Дата: 14.11.03 09:20
Оценка:
A_M>Да все это конечно хорошо, как быть с тем если нужно незаметно для пользователя умертвить его компьютер, ты же его не заставишь нажать Ctrl+Scroll+Scroll

А это можно и программно сделать
Re[9]: Как вызвать синий экран смерти?
От: Злость Россия  
Дата: 14.11.03 09:50
Оценка:
Здравствуйте, Alex_Mistery, Вы писали:

[skip]


A_M>Да все это конечно хорошо, как быть с тем если нужно незаметно для пользователя умертвить его компьютер, ты же его не заставишь нажать Ctrl+Scroll+Scroll


A_M>Плюс вторая проблема, мой предыдущий код работает только под админом, под юзером система не позволляет устанавливать драйвера или динамически их загружать как сервисы и запускать!


A_M>Нужно придумать универсальный способ!


А зачем это делать — . Кроме как получить полный(или другие варианты) дамп памяти.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re[10]: Как вызвать синий экран смерти?
От: Alex_Mistery Беларусь  
Дата: 14.11.03 12:49
Оценка:
Здравствуйте, Аноним, Вы писали:


А> А это можно и программно сделать



Каким это образом! SendMessage или PostMessage отпадает сразу, нет hwnd и к тому же системный сервис (а именно он отвечает за обработку этой комбинации клавиш) неполучит этого сообщения, даже если бы ты знал ProcessID, что тоже нериально. Если ты думаешь, что ты поставишь глобальный системный хук на клавиатуру, и потом по команде сверху сформируешь кейсток с Ctrl+Scroll+Scroll и отправишь его дальше по цепочке фильтров вызвав CallNextHook — то это тоже несработает ( точно не знаю почему, связано с системными клавишами, сначала они обрабатываются внутренними механизмами системы, а затем передеются установленным хукам) т.е. передача Ctrl+Scroll+Scroll вниз по цепочке фильтров хуков невызовет желаемого результата, так как обрабочик (системный сервис) уже отработал и не ждет никаких клавиш.

Если ты сделал это программно будь добр подкинь код!
Мы — маньяки, должны помогать друг другу!
Re[10]: Как вызвать синий экран смерти?
От: Alex_Mistery Беларусь  
Дата: 14.11.03 12:55
Оценка:
Здравствуйте, Злость, Вы писали:


З>А зачем это делать — . Кроме как получить полный(или другие варианты) дамп памяти.


Фишка же не втом зачем это делать, а как это сделать!

А зачем есть масса причин ну ненравится тебе какой нибудь user, приконектился к своей проге по tcp/ip на его нашине и отправил винду в нирвану пользоваться там всякими RAdmin'ами это нам программерам не с руки!
Мы — маньяки, должны помогать друг другу!
Re[6]: Как вызвать синий экран смерти?
От: Блудов Павел Россия  
Дата: 14.11.03 13:09
Оценка:
Здравствуйте, Hacker_Delphi, Вы писали:

H_D>все, слет гарантирован... локализовал ошибку с четвертой попытки...


Ну это еще от драйверов зависит. У NVidia, например, BSOD
запросто получается если создать в видеопамяти текстурку, и там же просто
поверхность большего размера, чем текстурка. И сблитить одну в другую.

Валит любые драйвера начиная с 5.12
Павел.
Re: Как вызвать синий экран смерти?
От: ABCDEFG  
Дата: 14.11.03 20:28
Оценка: :)
Здравствуйте, alfarn, Вы писали:

A>С помощью какого кода можно вызвать синий экран?


А его никак не зовут, он сам приходит.
Re[11]: Как вызвать синий экран смерти?
От: Vadim B  
Дата: 14.11.03 21:00
Оценка: :)))
Здравствуйте, Alex_Mistery, Вы писали:

A_M>А зачем есть масса причин ну ненравится тебе какой нибудь user, приконектился к своей проге по tcp/ip на его нашине и отправил винду в нирвану пользоваться там всякими RAdmin'ами это нам программерам не с руки!


А может проще слабительного в чай подмешать?
Re[2]: Как вызвать синий экран смерти?
От: AlexVinS Россия  
Дата: 15.11.03 08:57
Оценка:
Здравствуйте, ABCDEFG, Вы писали:

ABC>Здравствуйте, alfarn, Вы писали:


A>>С помощью какого кода можно вызвать синий экран?


ABC>А его никак не зовут, он сам приходит.


Точно! Поиграл я вчера в UT2003 он и пришел


Умный человек знает не многое, но нужное
Re[2]: Как вызвать синий экран смерти?
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 15.11.03 17:56
Оценка:
А есть идеи, почему получается крах?

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.