0 / 0 / 0
Регистрация: 03.09.2024
Сообщений: 1
1

Как я могу сделать себе пользовательский BSOD (синий экран смерти)? Изменить BSOD

03.09.2024, 17:53. Показов 380. Ответов 6

Author24 — интернет-сервис помощи студентам
Мне нужно закастомить bsod под себя хочу сделать фоновое изображение, текст, который я хочу и т.д...

Я пробовал сделать пользовательский bsod с помощью AngryWindows и BugCheckHack, но ничего не вышло.

Также я пробовал изменить ntoskrnl.exe, отвечающий за вызов BSOD, с помощью Resource Haker, но если я изменяю хотя бы один символ в nstokern.exe, моя Windows не запускается. Конечно, я пробовал все эти способы в виртуальной машине.

Еще я пробовал изменить реестр, но так же безрезультатно.


ОС на которой я это пробовал: Windows 11 Pro 22H2

Я добиваюсь результата как в этом видео. Понятное дело я делал все по инструкции, но ничего не вышло.

Буду рад любой помощи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2024, 17:53
Ответы с готовыми решениями:

BSOD при установке драйверов Creative / BSOD (Синий экран смерти)
Здравствуйте! Возникла проблема с установкой драйверов для мультимедиа аудиоконтроллёра и Game Port...

BSOD при установке драйверов AMD / BSOD (Синий экран смерти)
Всем добрый день, прошу помощи, мучаюсь уже 3дня. Сижу я играю в игру, вдруг зависает компьютер,...

Как вызвать синий экран смерти? BSOD
Именно вызвать, а не спровоцировать... Нашел код на делфи, который по описанию должен вызвать BSOD...

Синий экран смерти BSOD
Вчера обновилась win 7 максимальная 21 обновления.После этого вечером пришел включил начинается...

6
217 / 23 / 7
Регистрация: 12.11.2013
Сообщений: 44
05.09.2024, 08:29 2
Как сделать так чтобы приложение сидело в трее в Windows 10?
Цитата Сообщение от _lunar_ Посмотреть сообщение
PS: но нужно быть осторожным, если передать ResponseOptionShutdownSystem с каким-нибудь из сообщений ошибок
(например STATUS_ACCESS_DENIED), и процесс будет Elevated или System, то словите BSOD с переданной пользователем ошибкой.
0
217 / 23 / 7
Регистрация: 12.11.2013
Сообщений: 44
05.09.2024, 08:41 3
Ещё вариант: запустить обновленную утилиту KernelExplorer от _lunar_ SystemResearch.zip
Запустить System Informer (бывший Process Hacker) от системы и попробовать поменять в токене Permissions владельца объекта.
Или банально в терминальной сессии запустить (из-под Explorer++) любой системный процесс (ntoskrnl.exe, wininit.exe и т.д.).
В общем поломать систему и вызвать bsod с этой утилитой на раз можно.
0
217 / 23 / 7
Регистрация: 12.11.2013
Сообщений: 44
05.09.2024, 22:27 4
Стало интересно, и решил реализовать концепцию _lunar_
Скомпилировал его код в программу UserBSOD.zip

Затем через KernelExplorer запустил её от системы. Но ничего не произошло.
Но потом понял, что при использовании сообщения ResponseOptionShutdownSystem необходимо включить привилегию SeShutdownPrivilege и всё сработало!

Порядок действий:
1. запустить SystemResearch.exe от имени администратора
2. через кнопку Privileges and Access Rights Manager включить привилегию SeDebugPrivilege
Как я могу сделать себе пользовательский BSOD (синий экран смерти)? Изменить BSOD

3. нажать кнопку Super User (as SYSTEM)
4. через кнопку Privileges and Access Rights Manager включить привилегию SeShutdownPrivilege
Как я могу сделать себе пользовательский BSOD (синий экран смерти)? Изменить BSOD

5. нажать кнопку Create Process (as SYSTEM)
6. выбрать Нет, найти файл UserBSOD.exe и открыть его

Сразу после исполнения получаем управляемый пользовательский BSOD ядра ОС
Как я могу сделать себе пользовательский BSOD (синий экран смерти)? Изменить BSOD
0
217 / 23 / 7
Регистрация: 12.11.2013
Сообщений: 44
06.09.2024, 10:40 5
Довел UserBSOD.exe до автоматизма (теперь не требуется запускать программу из-под KernelExplorer) UserBSOD.zip
Запускаете от имени администратора и получаете пользовательский BSOD.

Так же выкладываю исходный код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#define _UNICODE
#define UNICODE
 
 
#include <windows.h>
#include <wchar.h>
#include <shlobj.h>
 
#pragma comment(lib, "Shell32")
 
 
#define HARDERROR_PARAMETER_MASK        (0x00000003L)
#define MAXIMUM_HARDERROR_PARAMETERS    (0x00000004L)
 
#define STATUS_ACCESS_DENIED            ((NTSTATUS)0xC0000022L)
#define STATUS_SERVICE_NOTIFICATION     ((NTSTATUS)0x40000018L)
 
 
typedef enum _HARDERROR_RESPONSE_OPTION {
    ResponseOptionAbortRetryIgnore,
    ResponseOptionOK,
    ResponseOptionOKCancel,
    ResponseOptionRetryCancel,
    ResponseOptionYesNo,
    ResponseOptionYesNoCancel,
    ResponseOptionShutdownSystem,
    ResponseOptionTrayNotify,
    ResponseOptionCancelTryAgainContinue
} HARDERROR_RESPONSE_OPTION;
 
typedef enum _HARDERROR_RESPONSE {
    ResponseReturnToCaller,
    ResponseNotHandled,
    ResponseAbort,
    ResponseCancel,
    ResponseIgnore,
    ResponseNo,
    ResponseOk,
    ResponseRetry,
    ResponseYes,
    ResponseTryAgain,
    ResponseContinue
} HARDERROR_RESPONSE;
 
 
typedef struct _UNICODE_STRING {
    USHORT Length;
    USHORT MaximumLength;
    PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
 
 
typedef void(NTAPI* _RtlInitUnicodeString)(
    PUNICODE_STRING DestinationString,
    PCWSTR SourceString
    );
_RtlInitUnicodeString RtlInitUnicodeString = nullptr;
 
typedef NTSTATUS(NTAPI* _NtRaiseHardError)(
    NTSTATUS ErrorStatus,
    ULONG NumberOfParameters,
    ULONG UnicodeStringParameterMask,
    PULONG_PTR Parameters,
    ULONG ValidResponseOptions,
    PULONG Response
    );
_NtRaiseHardError NtRaiseHardError = nullptr;
 
 
BOOL EnableSeShutdownPrivilege(HANDLE hProcess, DWORD PrivilegeAttribute, PCTCH PrivilegeName)
{
    TOKEN_PRIVILEGES TokenPrivileges = { 0 };
 
    TokenPrivileges.PrivilegeCount = 1;
    TokenPrivileges.Privileges[0].Attributes = PrivilegeAttribute;
 
    HANDLE hToken = nullptr;
 
    if (!OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken))
        return FALSE;
 
    if (!LookupPrivilegeValue(nullptr, PrivilegeName, &TokenPrivileges.Privileges[0].Luid)) {
        CloseHandle(hToken);
        return FALSE;
    }
        
    if (!AdjustTokenPrivileges(hToken, FALSE, &TokenPrivileges, sizeof(TOKEN_PRIVILEGES), nullptr, nullptr)) {
        CloseHandle(hToken);
        return FALSE;
    }
 
    CloseHandle(hToken);
 
    return TRUE;
}
 
 
int wmain(void)
{
    if (!IsUserAnAdmin()) {
        wprintf(TEXT("Run App as Administrator!\n"));
        getwchar();
        return 1;
    }
 
    if (!EnableSeShutdownPrivilege(GetCurrentProcess(), SE_PRIVILEGE_ENABLED, SE_SHUTDOWN_NAME))
        return 1;
 
 
    UNICODE_STRING lpText = { 0 }, lpCaption = { 0 };
    ULONG HardErrorResponse = 0;
 
    RtlInitUnicodeString = (_RtlInitUnicodeString)GetProcAddress(GetModuleHandle(TEXT("ntdll")), "RtlInitUnicodeString");
    NtRaiseHardError = (_NtRaiseHardError)GetProcAddress(GetModuleHandle(TEXT("ntdll")), "NtRaiseHardError");
 
    RtlInitUnicodeString(&lpText, TEXT("MessageBox from kernel"));
    RtlInitUnicodeString(&lpCaption, TEXT("Message"));
 
    ULONG_PTR lpParameters[MAXIMUM_HARDERROR_PARAMETERS] = 
    {
        (ULONG_PTR)&lpText,
        (ULONG_PTR)&lpCaption,
        (MB_OK | MB_ICONINFORMATION | MB_APPLMODAL | MB_DEFBUTTON1),
        INFINITE
    };
 
    NtRaiseHardError(
        STATUS_ACCESS_DENIED,
        MAXIMUM_HARDERROR_PARAMETERS,
        HARDERROR_PARAMETER_MASK,
        (PULONG_PTR)lpParameters,
        ResponseOptionShutdownSystem,
        &HardErrorResponse
    );
 
    return 0;
}
0
Робот сгибальщик
1874 / 614 / 124
Регистрация: 29.07.2020
Сообщений: 3,237
Записей в блоге: 7
06.09.2024, 13:21 6
cloo, он вроде, кастомизацию окна хотел. А не способы вызвать bsod.

Добавлено через 34 минуты
А для вызова бсод даже сам Русинович делал утилиту.
0
217 / 23 / 7
Регистрация: 12.11.2013
Сообщений: 44
06.09.2024, 16:55 7
Цитата Сообщение от Jel Посмотреть сообщение
он вроде, кастомизацию окна хотел
Так это и есть структура HARDERROR_MSG
В неё передаются данные об ошибке. На скрине же видно, что код ошибки 0xC0000022 - тот что был передан пользователем.

Про утилиту Руссиновича знаю, не интересно от слова совсем (пишет стандартными api, а не теми, что скрыты ото всех).
0
06.09.2024, 16:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2024, 16:55
Помогаю со студенческими работами здесь

BSOD (Синий экран смерти)
Здравствуйте. Сразу о проблеме. После включения компьютера появляется bsod. В основном фигурирует...

BSOD (Синий экран смерти)
Здравствуйте. В последнее время часто начали выскакивать вот такие ошибки, в чем может быть...

BSoD Синий экран смерти
Прошу помощи. Вылетают сэс причем рандомно, тестил ОЗУ mdsched-ом, проблем не обнаружено; проверил...

Синий Экран Смерти (BSOD)
Помогите чем Сможете.. Мне Надоели они уже:( Выпадают Рандомно.

BSOD (Синий экран смерти)
помогите решить проблему

Синий экран смерти, BSOD 0х000000F4
Здравствуйте. Нуждаюсь в помощи. Долго думал и решил обратиться к вам. Приложу скрин. Заранее...

BSOD (Синий экран смерти) 0x100000EA
Здравствуйте, В середине февраля приобрёл ноутбук Dell Inspiron 5545 для работы с Adobe After...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru