Windows驱动编程之内存读写

admin 2021年8月31日08:34:56评论91 views字数 1091阅读3分38秒阅读模式

#include <ntddk.h>


NTSTATUS 

  ZwAllocateVirtualMemory(

    IN HANDLE  ProcessHandle,

    IN OUT PVOID  *BaseAddress,

    IN ULONG  ZeroBits,

    IN OUT PSIZE_T  RegionSize,

    IN ULONG  AllocationType,

    IN ULONG  Protect

    ); 





NTSTATUS ReadWriteProcess()

{

NTSTATUS Status;

HANDLE hProcess;

CLIENT_ID ClientId;

OBJECT_ATTRIBUTES ObjAttr;


PVOID AllocateAddress;

size_t RegionSize;


ClientId.UniqueProcess = (HANDLE)2084;

ClientId.UniqueThread = 0;

memset(&ObjAttr,0,sizeof(OBJECT_ATTRIBUTES));


Status = ZwOpenProcess(&hProcess,PROCESS_ALL_ACCESS,&ObjAttr,&ClientId);

if (!NT_SUCCESS(Status))

{

KdPrint(("error code:%X",Status));

return Status;

}

RegionSize = 0xff;


Status = ZwAllocateVirtualMemory(hProcess,&AllocateAddress,0,&RegionSize,MEM_COMMIT,PAGE_EXECUTE_READWRITE);

if (!NT_SUCCESS(Status))

{

KdPrint(("error code:%X",Status));

return Status;

}

KdPrint(("address:%X,size:%d",AllocateAddress,RegionSize));


ZwClose(hProcess);

return Status;

}


VOID MyUnload(PDRIVER_OBJECT pDriverObject)

{

}


NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING Reg_Path)

{

ReadWriteProcess();

pDriverObject->DriverUnload = MyUnload;

return STATUS_SUCCESS;

}


本文始发于微信公众号(飓风网络安全):Windows驱动编程之内存读写

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月31日08:34:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows驱动编程之内存读写https://cn-sec.com/archives/358822.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息