Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "driver.h"
- #include <ntddk.h>
- #include "driver.tmh"
- #pragma comment(lib, "Ntoskrnl.lib")
- #ifdef ALLOC_PRAGMA
- #pragma alloc_text (INIT, DriverEntry)
- #pragma alloc_text (PAGE, CallOfDutySysFileEvtDeviceAdd)
- #pragma alloc_text (PAGE, CallOfDutySysFileEvtDriverContextCleanup)
- #endif
- NTSTATUS KeReadProcessMemory(PEPROCESS Process, PVOID SourceAddress, PVOID TargetAddress, SIZE_T Size)
- {
- PEPROCESS SourceProcess = Process;
- PEPROCESS TargetProcess = PsGetCurrentProcess();
- SIZE_T Result;
- if (NT_SUCCESS(MmCopyVirtualMemory(SourceProcess, SourceAddress, TargetProcess, TargetAddress, Size, KernelMode, &Result)))
- return STATUS_SUCCESS;
- else
- return STATUS_ACCESS_DENIED;
- }
- NTSTATUS KeWriteProcessMemory(PEPROCESS Process, PVOID SourceAddress, PVOID TargetAddress, SIZE_T Size)
- {
- PEPROCESS SourceProcess = PsGetCurrentProcess();
- PEPROCESS TargetProcess = Process;
- SIZE_T Result;
- if (NT_SUCCESS(MmCopyVirtualMemory(SourceProcess, SourceAddress, TargetProcess, TargetAddress, Size, KernelMode, &Result)))
- return STATUS_SUCCESS;
- else
- return STATUS_ACCESS_DENIED;
- }
- NTSTATUS
- DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath)
- {
- WDF_DRIVER_CONFIG config;
- NTSTATUS status;
- WDF_OBJECT_ATTRIBUTES attributes;
- WPP_INIT_TRACING(DriverObject, RegistryPath);
- TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_DRIVER, "%!FUNC! Entry");
- WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
- attributes.EvtCleanupCallback = CallOfDutySysFileEvtDriverContextCleanup;
- WDF_DRIVER_CONFIG_INIT(&config,
- CallOfDutySysFileEvtDeviceAdd
- );
- status = WdfDriverCreate(DriverObject,
- RegistryPath,
- &attributes,
- &config,
- WDF_NO_HANDLE
- );
- if (!NT_SUCCESS(status)) {
- TraceEvents(TRACE_LEVEL_ERROR, TRACE_DRIVER, "WdfDriverCreate failed %!STATUS!", status);
- WPP_CLEANUP(DriverObject);
- return status;
- }
- TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_DRIVER, "%!FUNC! Exit");
- return status;
- }
- NTSTATUS
- CallOfDutySysFileEvtDeviceAdd(
- _In_ WDFDRIVER Driver,
- _Inout_ PWDFDEVICE_INIT DeviceInit
- )
- {
- NTSTATUS status;
- UNREFERENCED_PARAMETER(Driver);
- PAGED_CODE();
- TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_DRIVER, "%!FUNC! Entry");
- status = CallOfDutySysFileCreateDevice(DeviceInit);
- TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_DRIVER, "%!FUNC! Exit");
- return status;
- }
- VOID
- CallOfDutySysFileEvtDriverContextCleanup(
- _In_ WDFOBJECT DriverObject
- )
- {
- UNREFERENCED_PARAMETER(DriverObject);
- PAGED_CODE();
- TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_DRIVER, "%!FUNC! Entry");
- WPP_CLEANUP(WdfDriverWdmGetDriverObject((WDFDRIVER)DriverObject));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement