首页
社区
课程
招聘
[求助]NtCreateSection OBJECT_ATTRIBUTES::ObjectName::Buffer指针的更改出错
发表于: 2016-4-9 19:21 4049

[求助]NtCreateSection OBJECT_ATTRIBUTES::ObjectName::Buffer指针的更改出错

2016-4-9 19:21
4049
如题:
NTSTATUS _stdcall _NtCreateSection(
		OUT PHANDLE            SectionHandle,
		IN  ACCESS_MASK        DesiredAccess,
		IN  POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
		IN  PLARGE_INTEGER     MaximumSize OPTIONAL,
		IN  ULONG              SectionPageProtection,
		IN  ULONG              AllocationAttributes,
		IN  HANDLE             FileHandle OPTIONAL
		)
{
WCHAR NAME[MAX_PATH];
memcpy(NAME, ObjectAttributes->ObjectName->Buffer,  ObjectAttributes->ObjectName->maxlen);
ObjectAttributes->ObjectName->Buffer = NAME;
// 再call 原始call, 结果 原始call 死活返回0xc0000005

}

好吧, 今天勾NtCreateSection中,使用了局部变量指针(数据直接copy)代替
ObjectAttributes::ObjectName::Buffer (= WCHAR NAME[MAX_PATH]),
死活返回0xc0000005;

请教: why??
PS:  wow system, 64位进程

已经解决:
方法如下:
//	对指定区域 设置线程为KernelMode
//		方法: KernelModeScope({指令...});
#define KernelModeScope(_x_) \
{	\
	PKTHREAD Kthread= (PKTHREAD)PsGetCurrentThread();	\
	char orgThrdMode = Kthread->PreviousMode;	\
	Kthread->PreviousMode =KernelMode;	\
	_x_;	\
	Kthread->PreviousMode =orgThrdMode;	\
}
KernelModeScope({原call(...);})


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 96
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
表示不能理解。
2016-4-9 20:22
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
都不判断object name存在没就直接拷,出了错还不知道调试定位。。。
NtCreateSection是可以创建无名的section,建议学习下系统的处理方式再来hook吧
2016-4-11 07:22
0
雪    币: 11
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
已经解决,方法附在上面
2016-4-15 23:44
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个方法太囧了。你这么一改是很爽,任意r3去调用就变成内核模式了。传递这个就不能用内核内存
2016-4-17 10:05
0
游客
登录 | 注册 方可回帖
返回
//