一、CR0方式写入只读内存
VirtualProtectEx
League of Legends.exe
0x400000
#include<ntifs.h>
VirtualQueryEx
#define PAGE_NOACCESS 0x01
#define PAGE_READONLY 0x02 只读
#define PAGE_READWRITE 0x04 可读可写
#define PAGE_WRITECOPY 0x08 写时复制
#define PAGE_EXECUTE 0x10 可执行
#define PAGE_EXECUTE_READ 0x20 可读可执行
#define PAGE_EXECUTE_READWRITE 0x40 可读可写可执行
#define PAGE_EXECUTE_WRITECOPY 0x80 可执行 写时复制 ntdll.dll user32.dll
#define PAGE_GUARD 0x100
#define PAGE_NOCACHE 0x200
#define PAGE_WRITECOMBINE 0x400
PAGE_READONLY: 该区域为只读。如果应用程序试图访问区域中的页的时候,将会被拒绝访
PAGE_READWRITE 区域可被应用程序读写
PAGE_EXECUTE: 区域包含可被系统执行的代码。试图读写该区域的操作将被拒绝。
PAGE_EXECUTE_READ :区域包含可执行代码,应用程序可以读该区域。
PAGE_EXECUTE_READWRITE: 区域包含可执行代码,应用程序可以读写该区域。
PAGE_GUARD: 区域第一次被访问时进入一个STATUS_GUARD_PAGE异常,这个标志要和其他保护标志合并使用,表明区域被第一次访问的权限
PAGE_NOACCESS: 任何访问该区域的操作将被拒绝
PAGE_NOCACHE: RAM中的页映射到该区域时将不会被微处理器缓存(cached)
二、驱动层,远程写只读内存驱动2.c
注释掉:
//g_pmdl->MdlFlags = MDL_WRITE_OPERATION | MDL_ALLOCATED_FIXED_SIZE | MDL_PAGES_LOCKED;
三、在驱动 ,过保护读写筛选器中添加 CR0_HEAD.c文件
添加代码如下:
#