⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getbiosid.txt

📁 获取BIOS ID: ReadBiosIdClass.h: interface for the CReadBiosIdClass class.
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                  return   FALSE;   
          }   
          if(   !(NtMapViewOfSection   =   (NTSTATUS   (__stdcall   *)(IN   HANDLE,   
                                                                                                                IN   HANDLE,   
                                                                                                                IN   OUT   PVOID   *,   
                                                                                                                IN   ULONG   ,   
                                                                                                                IN   ULONG   ,   
                                                                                                                IN   OUT   PLARGE_INTEGER   ,   
                                                                                                                IN   OUT   PULONG,   
                                                                                                                IN   SECTION_INHERIT   ,   
                                                                                                                IN   ULONG   ,   
                                                                                                                IN   ULONG   ))   GetProcAddress(   GetModuleHandle("ntdll.dll"),"NtMapViewOfSection"   ))   )   
          {   
                  return   FALSE;   
          }   
          if(   !(RtlNtStatusToDosError   =   (ULONG   (__stdcall   *)(NTSTATUS))   GetProcAddress(   GetModuleHandle("ntdll.dll"),"RtlNtStatusToDosError"   ))   )   
          {   
                  return   FALSE;   
          }   
          return   TRUE;   
  }   
    
  void   CReadBiosIdClass::PrintError(char   *message,   NTSTATUS   status)   
  {   
          char   *errMsg;   
          FormatMessage(   FORMAT_MESSAGE_ALLOCATE_BUFFER   |   FORMAT_MESSAGE_FROM_SYSTEM,   
  NULL,   RtlNtStatusToDosError(   status   ),   
  MAKELANGID(LANG_NEUTRAL,   SUBLANG_DEFAULT),   
  (LPTSTR)   &errMsg,   0,   NULL   );   
  TCHAR   errMessage[MAX_PATH];   
  sprintf(errMessage,   _T("%s:   %s"),   message,   errMsg);   
          //printf("",     );   
          LocalFree(   errMsg   );   
  AfxMessageBox(errMessage);   
  }
CString   CReadBiosIdDlg::GetBiosId()   
  {   
          HANDLE   physmem;   
          DWORD   vaddress,   paddress;   
  DWORD   length=1;   
    
  CString   strId;   
    
          char   ch;   
        
    
          if(!ReadBiosIdClass.LocateNtdllEntryPoints())   
          {   
                  AfxMessageBox("Unable   to   locate   NTDLL   entry   points!");   
                  return   -1;   
          }   
          //   
          //   Open   physical   memory   
          //   
          if(   !(physmem   =   ReadBiosIdClass.OpenPhysicalMemory()))   
          {   
                  return   -1;   
          }   
          //   
          //   Enter   the   command   loop   
          //   
          //printf("Enter   values   in   hexadecimal.   Enter   'q'   to   quit.\n");   
          /*while(   1   )   
          {   
                  printf("\nAddress:   "   );   fflush(   stdout   );   
                  gets(   input   );   
                  if(   input[0]   ==   'q'   ||   input[0]   ==   'Q'   )   
                          break;   
                  sscanf(   input,   "%x",   &paddress   );   
                  printf("Bytes:   ");   fflush(   stdout   );   
                  gets(   input   );   
                  if(   input[0]   ==   'q'   ||   input[0]   ==   'Q'   )   
                          break;   
                  sscanf(   input,   "%x",   &length   );   
                  //   
                  //   Map   it   
                  //   
                  if(   !MapPhysicalMemory(   physmem,   &paddress,   &length,&vaddress   ))   
                          continue;   
                  //   
                  //   Dump   it   
                  //   
                  lines   =   0;   
                  for(   i   =   0;   i   <   length;   i   +=   BYTESPERLINE   )   
                  {   
                          printf("%08X:   ",   paddress   +   i   );   
                          for(   j   =   0;   j   <   BYTESPERLINE;   j++   )   
                          {   
                                  if(   i+j   ==   length   )   break;   
                                  if(   j   ==   BYTESPERLINE/2   )   
                                          printf("-"   );   
                                  printf("%02X   ",   *(PUCHAR)   (vaddress   +   i   +j   ));   
                          }   
                          for(   j   =   0;   j   <   BYTESPERLINE;   j++   )   
                          {   
                                  if(   i+j   ==   length   )   break;   
                                  ch   =   *(PUCHAR)   (vaddress   +   i   +j   );   
                                  if(   __iscsym(   ch   )   ||       isalnum(   ch   )   ||         ch   ==   '   ')   
                                  {   
                                          printf("%c",   ch);   
                                  }   
                                  else   
                                  {   
                                          printf("."   );   
                                  }   
                          }   
                          printf("\n");   
                          if(   lines++   ==   LINESPERSCREEN   )   
                          {   
                                  printf("--   more   --   ('q'   to   abort)"   );   fflush(stdout);   
                                  ch   =   getchar();   
                                  if(   ch   ==   'q'   ||   ch   ==   'Q'   )   
                                  {   
                                          fflush(   stdin   );   
                                          break;   
                                  }   
                                  lines   =   0;   
                          }   
                  }   
                  //   
                  //   Unmap   the   view   
                  //   
                  UnmapPhysicalMemory(   vaddress   );   
          }*/   
          //   
          //   Close   physical   memory   section   
          //   
  int   i=0;   
  paddress=0x000fec71;//Award   
  ReadBiosIdClass.MapPhysicalMemory(   physmem,   &paddress,   &length,&vaddress   ) ;   
  paddress=0x000fec71-0x000fe000;   
    
          if(ReadBiosIdClass.biosCheckAward(vaddress+paddress))   
  {   
  strId   =   _T("Is   Award   Bios!         ");   
  while(i<50)   
  {   
  if(*(PUCHAR)(vaddress+paddress+i)   >   0x20   &&   *(PUCHAR)(vaddress+paddress+i)   <   0x71)   
  {   
  ch   =   *(PCHAR)(vaddress+paddress+i);   
  strId   =   strId   +   ch;   
  //printf("%c",   ch);                   
  }   
  else   
  {   
  //printf("\r\n");   
  break;   
  }   
  i++;   
  }   
  }   
    
  paddress=0x000ff478;//AMI   
  ReadBiosIdClass.MapPhysicalMemory(   physmem,   &paddress,   &length,&vaddress   ) ;   
  paddress=0x000ff478-0x000ff000;   
    
          if(ReadBiosIdClass.biosCheckAMI(vaddress+paddress))   
  {   
  strId   =   _T("Is   AMI   Bios!         ");   
  while(i<50)   
  {   
  if(*(PUCHAR)(vaddress+paddress+i)   >   0x20   &&   *(PUCHAR)(vaddress+paddress+i)   <   0x71)   
  {   
  ch   =   *(PCHAR)(vaddress+paddress+i);   
  strId   =   strId   +   ch;   
  //printf("%c",   ch);                   
  }   
  else   
  {   
  //printf("\r\n");   
  break;   
  }   
  i++;   
  }   
  }   
    
    paddress=0x000ff478;//AMI   
  ReadBiosIdClass.MapPhysicalMemory(   physmem,   &paddress,   &length,&vaddress   ) ;   
  paddress=0x000ff478-0x000ff000;   
    
          if(ReadBiosIdClass.biosCheckAMI(vaddress+paddress))   
  {   
  while(i<50)   
  {   
  if(*(PUCHAR)(vaddress+paddress+i)   >   0x20   &&   *(PUCHAR)(vaddress+paddress+i)   <   0x71)   
  {   
  ch   =   *(PCHAR)(vaddress+paddress+i);   
  strId   =   strId   +   ch;   
  //printf("%c",   ch);   
  }   
  else   
  {   
  printf("\r\n");   
  break;   
    
  }   
  i++;   
  }   
  }   
    
  paddress=0x000f6577;//Phoenix   
  ReadBiosIdClass.MapPhysicalMemory(   physmem,   &paddress,   &length,&vaddress   ) ;   
  paddress=0x000f6577-0x000f6000;   
    
          if(ReadBiosIdClass.biosCheckPhoenix(vaddress+paddress))   
  {   
  strId   =   _T("Is   Phoenix   Bios!         ");   
  while(i<50)   
  {   
  if(*(PUCHAR)(vaddress+paddress+i)   >   0x20   &&   *(PUCHAR)(vaddress+paddress+i)   <   0x71)   
  {   
  ch   =   *(PCHAR)(vaddress+paddress+i);   
  strId   =   strId   +   ch;   
  //printf("%c",   ch);   
    }   
  else   
  {   
  //printf("\r\n");   
  break;   
  }   
  i++;   
  }   
  }   
    
  paddress=0x000f7196;//Phoenix   
  ReadBiosIdClass.MapPhysicalMemory(   physmem,   &paddress,   &length,&vaddress   ) ;   
  paddress=0x000f7196-0x000f7000;   
    
          if(ReadBiosIdClass.biosCheckPhoenix(vaddress+paddress))   
  {   
  strId   =   _T("Is   Phoenix   Bios!         ");   
  while(i<50)   
  {   
  if(*(PUCHAR)(vaddress+paddress+i)   >   0x20   &&   *(PUCHAR)(vaddress+paddress+i)   <   0x71)   
  {   
  ch   =   *(PCHAR)(vaddress+paddress+i);   
  strId   =   strId   +   ch;   
  //printf("%c",   ch);                   
  }   
  else   
  {   
  //printf("\r\n");   
  break;   
  }   
  i++;   
  }   
  }   
  paddress=0x000f7550;//Phoenix   
  ReadBiosIdClass.MapPhysicalMemory(   physmem,   &paddress,   &length,&vaddress   ) ;   
  paddress=0x000f7550-0x000f7000;   
    
          if(ReadBiosIdClass.biosCheckPhoenix(vaddress+paddress))   
  {   
  strId   =   _T("Is   Phoenix   Bios!         ");   
  while(i<50)   
  {   
  if(*(PUCHAR)(vaddress+paddress+i)   >   0x20   &&   *(PUCHAR)(vaddress+paddress+i)   <   0x71)   
  {   
  ch   =   *(PCHAR)(vaddress+paddress+i);   
  strId   =   strId   +   ch;   
  //printf("%c",   ch);   
  }   
  else   
  {   
  //printf("\r\n");   
  break;   
  }   
  i++;   
  }   
  }   
  CloseHandle(physmem);   
  return   strId;     
  }

接上
调用方法:   
  CString   strBiosId   =   GetBiosId();   
  AfxMessageBox(strBiosId);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -