首页
社区
课程
招聘
未解决 ZwProtectVirtualMemory修改内存属性有时候可以有时候不可以
发表于: 2020-11-3 23:13 3122

未解决 ZwProtectVirtualMemory修改内存属性有时候可以有时候不可以

2020-11-3 23:13
3122
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ULONG SetProtect(HANDLE pid, PVOID addr, ULONG size, ULONG protect) {
typedef NTSTATUS(*pZwProtectVirtualMemory)(HANDLE ProcessHandle, PVOID* BaseAddress, PULONG ProtectSize, ULONG NewProtect, PULONG OldProtect);
pZwProtectVirtualMemory ZwProtectVirtualMemory = (pZwProtectVirtualMemory)((UINT64)ZwWaitForSingleObject + 0x20 * (0x4d - 1));
 
 
//    根据pid获取PEPROCESS
PEPROCESS process;
PsLookupProcessByProcessId(pid, &process);
 
ULONG OldProtect = 0;
KAPC_STATE apc_state;
 
//    附加来切换到目标进程()
KeStackAttachProcess(process, &apc_state);
//    判断目标地址的数据是否有效()
 
    ZwProtectVirtualMemory(NtCurrentProcess(), &addr, &size, protect, &OldProtect);
 
//    切换到原进程()
KeUnstackDetachProcess(&apc_state);
//    引用计数-1
ObDereferenceObject(process);
return OldProtect;
}

有时候成功有时候不行
话说需不需要通过ZwOpenProcess打开然后修改
如果需要给个代码


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

最后于 2020-11-3 23:16 被wx_1_842编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
NTSTATUS?!
2020-11-6 05:23
0
雪    币: 65
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
.
2020-11-7 09:19
0
雪    币: 2119
活跃值: (3151)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
不判断一下PsLookupProcessByProcessId返回是否正确?
2020-11-7 10:23
0
雪    币: 44
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
if (NT_SUCCESS(PsLookupProcessByProcessId(pid, &Process)))
{
还是判断一下嘛
}
2020-11-7 10:55
0
雪    币: 6
活跃值: (546)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
一直不明白 PsLookupProcessByProcessId后是否需要调用ObDereferenceObject,微软官方说需要,但是看好多源码例程里都没调用
2020-11-7 23:45
0
雪    币: 789
活跃值: (1819)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
大佬求关照 一直不明白 PsLookupProcessByProcessId后是否需要调用ObDereferenceObject,微软官方说需要,但是看好多源码例程里都没调用
需要的,在你调用函数的时候,会引用计数会增加,不删除的话会影响对象的释放
2020-11-8 00:04
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
if (NT_SUCCESS( ZwProtectVirtualMemory(NtCurrentProcess(), &addr, &size, protect, &OldProtect))
{

}
2020-11-8 18:22
0
雪    币: 65
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
wx_A_843 if (NT_SUCCESS(PsLookupProcessByProcessId(pid, &Process))) { 还是判断一下嘛 }

不然会蓝屏

最后于 2020-11-16 11:09 被wx_1_842编辑 ,原因:
2020-11-16 11:08
0
游客
登录 | 注册 方可回帖
返回
//