Вызов синиго экрана смерти
|
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
Группа: Модераторы
Сообщений: 467
Статус: 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
Группа: Модераторы
Сообщений: 316
Статус: 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
Группа: Пользователи
Сообщений: 258
Статус: 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
|
Администратор
Сообщений: 902
Статус: Offline
|
Qubert, причём fasm, Marra_Kesh, откомпилировал, у меня сработало весит всего 1536 байт при сжатии 777 . так что в любой проект делфи можно запихнуть.
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
|
|
|
|
|
dolphin
|
Дата: Воскресенье, 11.03.2012, 11:37 | Сообщение # 17
|
Администратор
Сообщений: 902
Статус: Offline
|
BSOD на Delphi
Доступно только для пользователей
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
Сообщение отредактировал dolphin - Воскресенье, 11.03.2012, 11:38
|
|
|
|
|
Neo
|
Дата: Среда, 12.06.2013, 13:10 | Сообщение # 18
|
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 316
Статус: 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
Группа: Модераторы
Сообщений: 316
Статус: 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
|
Был не раз
Зарегистрирован: 25.06.2017
Группа: Пользователи
Сообщений: 14
Статус: Offline
|
Aqueduct — Шаблоны WordPress. Скачать бесплатно премиум шаблон Вордпресс Click here!..
бежевые — Шаблоны WordPress. Скачать бесплатно премиум шаблон Вордпресс [url=http://ruwordpress.ru/tag/bezhevye/]Show more!..[/url]
|
|
|
|
|
JessyGearf
|
Дата: Пятница, 30.06.2017, 18:11 | Сообщение # 24
|
Был не раз
Зарегистрирован: 30.06.2017
Группа: Пользователи
Сообщений: 6
Статус: Offline
|
Всем привет!
Я зарабатывю здесь...
[url=http://corneey.com/qZbxTV]samsung galaxy s8 купить[/url]
|
|
|
|
|