首页
社区
课程
招聘
[求助]映射文件到内存成功.但是DD了下全是问号.
发表于: 2013-11-14 13:59 4725

[求助]映射文件到内存成功.但是DD了下全是问号.

2013-11-14 13:59
4725
我想把ntoskrnl.exe映射到内存.
映射后成功返回了内存地址.但是我用WINDBG查看了下.里面全是问号.
检查半天也没发现问题.只好来求前辈们指点了.

第一次加载的时候居然是这样情况.0x00400000,这是为什么,求解答..


然后卸载了第二次加载.正常了


DC下返回的地址.全是问号...


以上就是碰到的两个问题..求前辈不吝赐教.

下面是代码

首先是在DriverEntry部分
	UNICODE_STRING J_Modle_Name;
	ULONG J_Map_Base;

	RtlInitUnicodeString(&J_Modle_Name, L"\\??\\C:\\windows\\System32\\ntoskrnl.exe"); //ntkrnlpa
	J_Map_Base = Map_File_Get_Base(&J_Modle_Name); //映射文件到内存
	KdPrint((">>>Map_File_Get_Base: 0x%08X   \n\n",J_Map_Base ));


实现映射后返回地址部分

ULONG Map_File_Get_Base (UNICODE_STRING *C_File_Name)
{
	VOID *J_Map_File_Base = NULL;
	NTSTATUS J_Return;
	SIZE_T size = 0;
	IO_STATUS_BLOCK J_File_Status;
	OBJECT_ATTRIBUTES J_File_Attributes;

	InitializeObjectAttributes(&J_File_Attributes,C_File_Name,OBJ_CASE_INSENSITIVE ,0,0);
	KdPrint(("\n初始化文件对象属性: %wZ\n",J_File_Attributes.ObjectName));

	J_Return = ZwOpenFile(
		&G_File_Handle,   
		FILE_EXECUTE | SYNCHRONIZE, //打开文件的权限
		&J_File_Attributes, 
		&J_File_Status,  //收到最后的完成状态和其他有关的信息
		FILE_SHARE_READ | FILE_SHARE_WRITE,  
		FILE_SYNCHRONOUS_IO_NONALERT);  

	if(! NT_SUCCESS(J_Return))
	{
		KdPrint(("ZwOpenFile : 错误代码:0x%X\n",J_Return));
		ZwClose(G_File_Handle);
		return 0;
	}

	
	J_File_Attributes.ObjectName = 0;
	J_Return = ZwCreateSection(
		&G_Section_Handle,
		SECTION_ALL_ACCESS,
		&J_File_Attributes,
		0,
		PAGE_EXECUTE_WRITECOPY,  //与ZwOpenFile的共享方式对应
		SEC_IMAGE, 
		G_File_Handle);


	if(! NT_SUCCESS(J_Return))
	{
		KdPrint(("ZwCreateSection : 错误代码:0x%X\n",J_Return));
		ZwClose(G_File_Handle);
		ZwClose(G_Section_Handle);
		return 0;
	}


	J_Return = ZwMapViewOfSection(
		G_Section_Handle,
		ZwCurrentProcess(),
		&J_Map_File_Base, 
		0, 
		1024,
		0, 
		&size,
		ViewShare,
		MEM_TOP_DOWN, 
		PAGE_READWRITE); 
	if(!NT_SUCCESS(J_Return))
	{
		KdPrint(("ZwMapViewOfSection : 错误代码:0x%X\n",J_Return));
		ZwClose(G_File_Handle);
		ZwClose(G_Section_Handle);
		return 0;
	}

	return (ULONG)J_Map_File_Base;
}



最后的
        ZwClose(G_File_Handle);
        ZwClose(G_Section_Handle);
放在驱动卸载的部分

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 239
活跃值: (133)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
进程切换到system进程
2013-11-14 15:20
0
游客
登录 | 注册 方可回帖
返回
//