windows 内核模式读写内存
2023-09-14 08:58:44 时间
sysmain.c
#pragma warning(disable: 4100 4047 4024)
#pragma once
#include <ntifs.h>
#include <ntddk.h>
NTKERNELAPI
NTSTATUS
MmCopyVirtualMemory(
// 从哪里copy
_In_ PEPROCESS srcProcess,
_In_ PVOID srcAddr,
// copy到哪里去
_In_ PEPROCESS dstProcess,
_In_ PVOID dstAddr,
// 资源(数据)的大小
_In_ SIZE_T DataSize,
// KernelModel
_In_ KPROCESSOR_MODE PreviousMode,
_Out_ PSIZE_T RetureSize
);
NTSTATUS kReadProcessMemory(PEPROCESS Process, PVOID lpBaseAddress, PVOID lpBuffer, size_t nSize)
{
PSIZE_T rSize;
return MmCopyVirtualMemory(Process, lpBaseAddress, PsGetCurrentProcess(), lpBuffer, nSize, KernelMode, &rSize);
}
NTSTATUS kWriteProcessMemory(PEPROCESS Process, PVOID lpBaseAddress, PVOID lpBuffer, size_t nSize)
{
PSIZE_T rSize;
return MmCopyVirtualMemory(PsGetCurrentProcess(), lpBuffer, Process, lpBaseAddress, nSize, KernelMode, &rSize);
}
NTSTATUS DriverUnload(PDRIVER_OBJECT pDriverObject)
{
DbgPrintEx(0, 0, "stop hsys.\n");
return STATUS_SUCCESS;
}
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegister)
{
pDriverObject->DriverUnload = DriverUnload;
PEPROCESS Process;
size_t pid = 2572;
PsLookupProcessByProcessId((HANDLE)pid, &Process);
PVOID addr = 0x00007FF72BB8C178;
int newValue = 100;
kWriteProcessMemory(Process, addr, &newValue, sizeof(int));
int readValue = 0;
kReadProcessMemory(Process, addr, &readValue, sizeof(int));
DbgPrintEx(0, 0, "change value: %d\n", readValue);
return STATUS_SUCCESS;
}
相关文章
- Windows下Nginx的启动、停止等命令&Nginx 配置多域名&windows下设置Nginx开机自动启动
- 4GB到底够不够 Windows 8需要多大容量内存
- Windows 下安装 Memcached
- windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解
- Windows下如何修改php.ini的访问路径?
- Windows原版镜像
- 在Windows 7和10上显示上次登录帐户信息
- kvm安装windows系统蓝屏
- MFC Windows 程序设计[213]之编辑框的设置与获取(附源码)
- OCR - 微软windows 11系统自带的Windows OCR功能初体验
- windows server 2008 安装Microsoft ActiveSync 6.1提示缺少一个Windows Mobile设备中心所须要的Windows组件
- 【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
- React Native学习笔记(一)—— Win10 Win11安卓子系统的安装与使用 - Windows Subsystem for Android - WSA
- 不用windows不会死
- C#中调用Windows API的要点 .
- 怎样实如今Windows下编写的代码,直接在Linux下编译
- 使用系统之家重装Windows系统——写给小白
- 使用Windbg定位Windows C++程序中的内存泄露
- Windows和Linux下排查C++软件异常的常用调试器与内存检测工具详细介绍
- Windows安装WSL进行机器学习(windows和Ubuntu同时使用)
- 全面介绍Windows内存管理机制及C++内存分配实例