首页
社区
课程
招聘
[分享]内核下对进程只读内存的安全写入方法SafeCopyMemory
发表于: 2017-6-10 00:09 7365

[分享]内核下对进程只读内存的安全写入方法SafeCopyMemory

2017-6-10 00:09
7365

测试过了,好用.

来看雪备份一下,顺便分享给大家.

原文出自,http://blog.csdn.net/u013761036/article/details/60359402

 BOOLEAN SafeCopyMemory(PVOID pDestination, PVOID pSourceAddress, SIZE_T SizeOfCopy)
 {
	 PMDL pMdl = NULL;
	 PVOID pSafeAddress = NULL;
	 if (!MmIsAddressValid(pDestination) || !MmIsAddressValid(pSourceAddress))
		 return FALSE;
	 pMdl = IoAllocateMdl(pDestination, (ULONG)SizeOfCopy, FALSE, FALSE, NULL);
	 if (!pMdl)
		 return FALSE;
	 __try
	 {
		 MmProbeAndLockPages(pMdl, KernelMode, IoReadAccess);
	 }
	 __except (EXCEPTION_EXECUTE_HANDLER)
	 {
		 IoFreeMdl(pMdl);
		 return FALSE;
	 }
	 pSafeAddress = MmGetSystemAddressForMdlSafe(pMdl, NormalPagePriority);
	 if (!pSafeAddress)
		 return FALSE;
	 __try
	 {
		 RtlMoveMemory(pSafeAddress, pSourceAddress, SizeOfCopy);
	 }
	 __except (EXCEPTION_EXECUTE_HANDLER)
	 {
		 ;
	 }
	 MmUnlockPages(pMdl);
	 IoFreeMdl(pMdl);
	 return TRUE;
 }
 void Test() {
	 PVOID HookCode = ExAllocatePool(NonPagedPool, 0x200);
	 RtlFillMemory(HookCode, 0x200, 0x90);
	 RtlMoveMemory(HookCode, NtOpenProcess, 0x3);
	 SafeCopyMemory(NtOpenProcess, HookCode, 0x3);



[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 7246
活跃值: (5073)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
缺点就是跟cr0一样,比如修改进程内存PE头,就会修改到文件上.
记得cr0修改内存,HOOK了NTDLL.dll函数,所有的进程也都会被HOOK
这什么情况,哪位大佬还有好一点的修改只读内存方法吗
2017-6-10 00:18
0
雪    币: 12848
活跃值: (9108)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
3
lononan 缺点就是跟cr0一样,比如修改进程内存PE头,就会修改到文件上. 记得cr0修改内存,HOOK了NTDLL.dll函数,所有的进程也都会被HOOK 这什么情况,哪位大佬还有好一点的修改只读内存方法 ...
NtProtectVirtualMemory,官方唯一指定方法  其他都是玩蛇
或者你自己把PTE里的COPYONWRITE打开也行
2017-6-10 08:54
0
雪    币: 7246
活跃值: (5073)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
hzqst NtProtectVirtualMemory,官方唯一指定方法 其他都是玩蛇 或者你自己把PTE里的COPYONWRITE打开也行
NtProtectVirtualMemory,没导出啊...麻烦...
2017-6-10 14:22
0
雪    币: 516
活跃值: (3141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wem
5
谢谢分享
2021-11-30 18:44
0
游客
登录 | 注册 方可回帖
返回
//