如何获取BIOS序列号
(2009-03-20 19:16:53)
标签:
获取bios序列号it |
分类: 编程 |
typedef struct _UNICODE_STRING
{
USHORT Length;//长度
USHORT MaximumLength;//最大长度
PWSTR Buffer;//缓存指针
}UNICODE_STRING,*PUNICODE_STRING;
typedef struct _OBJECT_ATTRIBUTES
{
ULONG
Length;
//长度 18h
HANDLE
RootDirectory;
// 00000000
PUNICODE_STRING
ObjectName;
//指向对象名的指针
ULONG
Attributes;
//对象属性00000040h
PVOID
SecurityDescriptor;
// Points to type SECURITY_DESCRIPTOR,0
PVOID
SecurityQualityOfService; //
Points to type SECURITY_QUALITY_OF_SERVICE,0
} OBJECT_ATTRIBUTES;
typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
typedef DWORD (__stdcall *ZWOS )( PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
typedef DWORD (__stdcall *ZWMV )( HANDLE,HANDLE,PVOID,ULONG,ULONG,PLARGE_INTEGER,PSIZE_T,DWORD,ULONG,ULONG);
typedef DWORD (__stdcall *ZWUMV )( HANDLE,PVOID);
UINT FindAwardBios(BYTE** ppBiosAddr)
{
BYTE*
pBiosAddr = * ppBiosAddr + 0xEC71;
BYTE
szBiosData[128];
CopyMemory(szBiosData, pBiosAddr, 127);
szBiosData[127] = 0;
int iLen =
lstrlen((char*)szBiosData);
if (iLen
> 0 && iLen
< 128)
{
//AWard:
07/08/2002-i845G-ITE8712-JF69VD0CC-00
//Phoenix-Award: 03/12/2002-sis645-p4s333
if (szBiosData[2] == '/' &&
szBiosData[5] == '/')
{
BYTE *p = szBiosData;
while (*p)
{
{
}UNICODE_STRING,*PUNICODE_STRING;
typedef struct _OBJECT_ATTRIBUTES
{
} OBJECT_ATTRIBUTES;
typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
typedef DWORD (__stdcall *ZWOS )( PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
typedef DWORD (__stdcall *ZWMV )( HANDLE,HANDLE,PVOID,ULONG,ULONG,PLARGE_INTEGER,PSIZE_T,DWORD,ULONG,ULONG);
typedef DWORD (__stdcall *ZWUMV )( HANDLE,PVOID);
UINT FindAwardBios(BYTE** ppBiosAddr)
{