积累系统性知识
积聚技术精华
  首页    个人中心    撰写积文    建立课题    订立目标    整理积文    管理课题    管理目标    技能Get    代码积累 
Windows 2000 下通过访问物理地址取主机唯一信息
error997 (error997)    2014-11-20 20:31:14      目标    课题
   Windows 2000 下通过访问物理地址取主机唯一信息 


切换到: 纯代码  
   
Author: sinister
Email: sinister@whitecell.org
Homepage:http://www.whitecell.org 

在9x下取得主版序列号非常简单,但此方法在NT/2K下行不通。还好NT/2K下 
提供了 /Device/PhysicalMemory 设备,通过它可以得到物理地址。在9x下 
通过访问地址 FEC71H 可以得到主板序列号。NT/2K下虽不保证是主板序列号, 
但经过多台机器反复测试,此地址的值是不变且唯一的。下面是我 DRIVE 中 
取主机唯一信息的代码,错误之处还望各位指正。 

切换到: 纯代码  
   
BOOLEAN MainBoardBiosSerialNo()
{

HANDLE physmem;
UNICODE_STRING physmemString;
OBJECT_ATTRIBUTES attributes;
WCHAR physmemName[] = L//Device//PhysicalMemory;

NTSTATUS ntStatus;
DWORD RAdd = 0xFEC71;
DWORD LAdd = 100;
DWORD OAdd;
DWORD i;


RtlInitUnicodeString( &physmemString, physmemName );

InitializeObjectAttributes( &attributes, 
&physmemString,
OBJ_CASE_INSENSITIVE,
NULL, 

NULL
);


切换到: 纯代码  
   
ntStatus = ZwOpenSection( &physmem, 
SECTION_MAP_READ, 
&attributes

);

切换到: 纯代码  
   
if( !NT_SUCCESS( ntStatus ))
{ 
DbgPrint("ZwOpenSection() is error/n");
return FALSE;
}

DbgPrint("ZwOpenSection() is OK/n");

if (!MapView(physmem,&RAdd,&LAdd,&OAdd))
{ 
DbgPrint("MapView() is error/n");
return FALSE;
}

DbgPrint("MapView() is OK/n");

for ( i = 0; i < LAdd; i ++)
{
DbgPrint("%x",*(PUCHAR)(OAdd + i));

}

ntStatus = ZwUnmapViewOfSection( (HANDLE) -1, (PVOID) OAdd );

if( !NT_SUCCESS(ntStatus))
{
DbgPrint("Unable to unmap view");
return FALSE;
} 


return TRUE;
}


BOOLEAN MapView( HANDLE HPMemory,DWORD *dwAddress,DWORD *dwLength,DWORD *dwVAddress )
{
NTSTATUS Status;
PHYSICAL_ADDRESS ViewBaseAddress;

*dwVAddress = 0;
ViewBaseAddress.QuadPart = (ULONGLONG) (*dwAddress);

Status = ZwMapViewOfSection ( HPMemory,
(HANDLE) -1,
(PVOID)dwVAddress,
0,
*dwLength,
&ViewBaseAddress,
dwLength,
ViewShare,
0,

PAGE_READONLY
);

切换到: 纯代码  
   
if( !NT_SUCCESS( Status ))
{
return FALSE;
}

return TRUE;
}

   http://topic.csdn.net/t/20030415/07/1661170.html如何使用VC获取CPU序列号


转自 http://blog.csdn.net/y___y/article/details/1354821
(+0)技能Get

建议楼主:搜索关键字 |参考其他资源 |回复 |追问
  error997(error997):   个人中心    课题    目标    代码积累