Пятница, 29.03.2024, 09:26 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
delphicode » Delphi » Вопросы по Delphi » Вызов синиго экрана смерти (BSOD)
Вызов синиго экрана смерти
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)
если рассматривать вариант:
поставить синий экран, как картинку, засунуть в автозапуск... но как сделать, чтобы она была полностью на весь экран (чтобы даже не было возможности увидеть правый красный крестик закрытия этой формы)


Это уже не вызов экрана смерти будет, а винлокер. Простой способ вызвать синий экран - помудрить с драйверами. Чтоб навсегда это вообще просто. Я раньше у реалтека подменял дллку, и при проигрывании звуков винда крашилась. Сейчас код дать не могу, т.к утерян он. sad
Еще есть способ для материнских плат asus. Когда на них устанавливать Реалтек АС97 , то вылетает экран смерти. Это у них баг такой, даже если там установлена звуковая карта от самого реалтека. sad

Вообще синий экран можно вызвать необработанным исключением, но сейчас на 7 винде это сделать очень сложно. На XP пак 1 без проблем. smile Пробуй! Удачи!

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;


можно так же сделать деление на ноль вместо ображение к нулевому адресу:
Code

mov eax,10
div 0



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 cool

Сообщение отредактировал 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
одной строчкой можна синий вызвать)) но лучше этого не делать)) cool

Я не крекер,а программист!
Я не преступник-я свободный человек!
Лучше один раз накодить,чем сто раз качать билды!
 
Marra_KeshДата: Суббота, 10.03.2012, 11:22 | Сообщение # 13
Постоянный
Зарегистрирован: 19.12.2009
Группа: Модераторы
Сообщений: 182
Статус: Offline
не на Delphi: biggrin
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'
biggrin


Заведующий палатой #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, откомпилировал, у меня сработало smile весит всего 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)
---------------------------------------------
Протестил на виртуалке синий экран действительно появился, но после перезагрузки все обычно стало cry

Добавлено (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
Группа: Удаленные



Всем привет!

Я зарабатывю здесь...
 
delphicode » Delphi » Вопросы по Delphi » Вызов синиго экрана смерти (BSOD)
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz