PDA

Просмотр полной версии : Удаленный BSOD


Zitt
22.03.2007, 23:14
Возможно ли реализовать такое?
Вобшем надо прогу клиент-сервер чтоб удаолённо мона было вызывать BSOD на WinXPsp2 (без обнов)

_Great_
23.03.2007, 01:12
а почему нет.
сервер + драйвер будут принимать запросы, драйвер будет вызываться и генерить бсод.
клиент будет слать запрос на бсод.

только вопрос - нафига?

Zitt
23.03.2007, 01:32
сервер + драйвер будут принимать запросы, драйвер будет вызываться и генерить бсод.
клиент будет слать запрос на бсод.
Можеш исходник накидать?
Да забыл сказать конект надо по Tcp/ip, типа вводиш ип жамкаеш кнопку и удалённая тачка в дауне.

только вопрос - нафига?
Нужно...

TaNkist
23.03.2007, 08:18
В принципе если винда без обновлений, то можно просто на тачке какой-нибудь эксплоит , вызывающий BSoD, запускать. Но это не универсальный метод.
Драйвер убийца вместе с загрузчиком прилагаются к книжке Шнайбера Недокументированные возможности Windows 2000

_Great_
23.03.2007, 17:43
Че там писать то


#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, ....);

Zitt
23.03.2007, 22:53
_Great_, пасиба большое...

_Great_
23.03.2007, 23:39
Надеюсь ты знаешь, что на момент вызова CreateFile драйвер должен быть уже загружен?

sn0w
27.03.2007, 18:15
нах вообще драйвер???????????? калгейт, епта и irql в смятку, правда попрет не дальше хрюшки