KMDF MmCopyVirtualMemory Undefined











up vote
0
down vote

favorite












Hello and my problem today is I was trying out a new/old method of writing memory with a system files(.sys) after watching Zer0Mem0ry's video on the subject. But I tried to copy but came with the error :



 Error C4013 'MmCopyVirtualMemory' undefined; assuming extern returning int


Even after having done everything. So I was wondering if I had to define this function or importation would be enough. Any help would be amazing!
My Code(driver.c)



https://pastebin.com/AfBUGFCh



Couldn't paste code for some reason.



#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));
}









share|improve this question




























    up vote
    0
    down vote

    favorite












    Hello and my problem today is I was trying out a new/old method of writing memory with a system files(.sys) after watching Zer0Mem0ry's video on the subject. But I tried to copy but came with the error :



     Error C4013 'MmCopyVirtualMemory' undefined; assuming extern returning int


    Even after having done everything. So I was wondering if I had to define this function or importation would be enough. Any help would be amazing!
    My Code(driver.c)



    https://pastebin.com/AfBUGFCh



    Couldn't paste code for some reason.



    #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));
    }









    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      Hello and my problem today is I was trying out a new/old method of writing memory with a system files(.sys) after watching Zer0Mem0ry's video on the subject. But I tried to copy but came with the error :



       Error C4013 'MmCopyVirtualMemory' undefined; assuming extern returning int


      Even after having done everything. So I was wondering if I had to define this function or importation would be enough. Any help would be amazing!
      My Code(driver.c)



      https://pastebin.com/AfBUGFCh



      Couldn't paste code for some reason.



      #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));
      }









      share|improve this question















      Hello and my problem today is I was trying out a new/old method of writing memory with a system files(.sys) after watching Zer0Mem0ry's video on the subject. But I tried to copy but came with the error :



       Error C4013 'MmCopyVirtualMemory' undefined; assuming extern returning int


      Even after having done everything. So I was wondering if I had to define this function or importation would be enough. Any help would be amazing!
      My Code(driver.c)



      https://pastebin.com/AfBUGFCh



      Couldn't paste code for some reason.



      #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));
      }






      kmdf






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited yesterday









      Rick Smith

      9861314




      9861314










      asked Oct 15 at 12:44









      Asbj1477

      62




      62





























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f52817091%2fkmdf-mmcopyvirtualmemory-undefined%23new-answer', 'question_page');
          }
          );

          Post as a guest





































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f52817091%2fkmdf-mmcopyvirtualmemory-undefined%23new-answer', 'question_page');
          }
          );

          Post as a guest




















































































          Popular posts from this blog

          The Sandy Post

          Danny Elfman

          Pages that link to "Head v. Amoskeag Manufacturing Co."