首页
社区
课程
招聘
[求助]ZwMapViewOfSection问题
发表于: 2014-6-30 03:05 7149

[求助]ZwMapViewOfSection问题

2014-6-30 03:05
7149
我在process_create_routine里面监视到一个进程启动了
然后我获取进程的全路径
利用这个路径 来打开并且映射到内存里
映射的过程很奇怪
第一张图显示的是映射成功了的
地址也有


到第二张这里的时候不正常了
我试图用WINDBG来访问这些内存空间 发现只能访问一小段
后面的根本就没有东西 导致我分析这个文件失败?到底是什么原因呢


#define SEC_IMAGE 0x1000000 
BOOL
get_version_info_by_path_name(
								 IN	PUNICODE_STRING	PathName,
								 IN	LPWSTR		lpNameType,
								 OUT	LPWSTR		lpBuffer
								 )
{
	NTSTATUS status = STATUS_SUCCESS;
	HANDLE hFile = NULL;
	HANDLE hSection = NULL;
	ULONG_PTR ViewBase = 0;
	BOOL bStatus = FALSE;

	do 
	{
		//UNICODE_STRING usName;
		//RtlInitUnicodeString( &usName, lpPathName );

		OBJECT_ATTRIBUTES oa = { 0 };
		InitializeObjectAttributes( &oa,
			PathName,
			OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,
			0,
			0 );

		IO_STATUS_BLOCK isb = { 0 };

		//打开文件

		status = ZwOpenFile(&hFile, FILE_EXECUTE, &oa, &isb, FILE_SHARE_READ, FILE_NON_DIRECTORY_FILE);

		if( STATUS_SUCCESS != status )
		{
			break;
		}

		oa.ObjectName = NULL;

		//创建Section
		status = ZwCreateSection( &hSection,
			SECTION_ALL_ACCESS, 
			&oa, 
			0,
			PAGE_EXECUTE, 
			SEC_IMAGE, 
			hFile );
		if( STATUS_SUCCESS != status )
		{
			break;
		}

		SIZE_T ViewSize = 0;
		//把内核文件映射到内存
		status = ZwMapViewOfSection(
			hSection,
			NtCurrentProcess(), 
			(PVOID *)(PVOID)&ViewBase, 
			NULL, 
			PAGE_SIZE, 
			NULL, 
			&ViewSize, 
			ViewShare, 
			0, 
			PAGE_READONLY);
		if ( !ViewBase )
			break;
		__try
		{
			ProbeForRead((PVOID)ViewBase, ViewSize, 1);
			//获取版本信息
			bStatus = GetModuleInternalName( (PVOID)ViewBase, lpNameType,lpBuffer );
		}
		__except(EXCEPTION_EXECUTE_HANDLER)
		{

		}



	} while( FALSE );

	if( NULL != ViewBase )
	{
		ZwUnmapViewOfSection( NtCurrentProcess(), (PVOID)ViewBase );
	}

	if( NULL != hSection )
	{
		ZwClose( hSection );
	}

	if( NULL != hFile )
	{
		ZwClose( hFile );
	}


	return bStatus;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 77
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
注意数据类型有无变化,调试时多注意看看,因为我曾经出现过类似的问题
2014-6-30 08:12
0
雪    币: 69
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
....
2014-6-30 09:27
0
雪    币: 19
活跃值: (1111)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢回答 不是很明白
2014-6-30 13:51
0
雪    币: 30
活跃值: (325)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
5
有人遇到相同的问题吗?不知道问题出在哪?该怎么解决呢
2022-4-7 16:11
0
雪    币: 30
活跃值: (325)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
6
映射成功了,只能看到一部分内容,貌似是windbg的原因
2022-4-7 17:57
0
游客
登录 | 注册 方可回帖
返回