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

📄 tzhm.h

📁 基于计算机特征码的软件注册加密及序列号生成的源程序
💻 H
📖 第 1 页 / 共 3 页
字号:
                0,
                &VersionParams,
                sizeof( GETVERSIONOUTPARAMS ),
                &cbBytesReturned, NULL ) )
            {
                // If there is a IDE device at number "i" issue commands
                // to the device
                if( VersionParams.bIDEDeviceMap != 0 )
                {
                    BYTE             bIDCmd = 0;   // IDE or ATAPI IDENTIFY cmd
                    SENDCMDINPARAMS  scip = { 0 };

                    // Now, get the ID sector for all IDE devices in the system.
                    // If the device is ATAPI use the IDE_ATAPI_IDENTIFY command,
                    // otherwise use the IDE_ATA_IDENTIFY command
                    bIDCmd = ( VersionParams.bIDEDeviceMap >> uDrive & 0x10 ) ? IDE_ATAPI_IDENTIFY : IDE_ATA_IDENTIFY;
                    BYTE IdOutCmd[sizeof( SENDCMDOUTPARAMS ) + IDENTIFY_BUFFER_SIZE - 1] = { 0 };

                    if( DoIdentify( hPhysicalDriveIOCTL, 
                        &scip, 
                        ( PSENDCMDOUTPARAMS )&IdOutCmd, 
                        ( BYTE )bIDCmd,
                        ( BYTE )uDrive,
                        &cbBytesReturned ) )
                    {
                        if( * puSerialLen + 20U <= uMaxSerialLen )
                        {
                            CopyMemory( dwSerial + * puSerialLen, ( ( USHORT* )( ( ( PSENDCMDOUTPARAMS )IdOutCmd )->bBuffer ) ) + 10, 20 );  // 序列号

                            // Cut off the trailing blanks
                            for( UINT i = 20; i != 0U && ' ' == dwSerial[* puSerialLen + i - 1]; -- i )  {}
                            * puSerialLen += i;

                            CopyMemory( dwSerial + * puSerialLen, ( ( USHORT* )( ( ( PSENDCMDOUTPARAMS )IdOutCmd )->bBuffer ) ) + 27, 40 ); // 型号

                            // Cut off the trailing blanks
                            for( i = 40; i != 0U && ' ' == dwSerial[* puSerialLen + i - 1]; -- i )  {}
                            * puSerialLen += i;

                            bInfoLoaded = TRUE;
                        }
                        else
                        {
                            ::CloseHandle( hPhysicalDriveIOCTL );
                            return bInfoLoaded;
                        }
                    }
                }
            }
            CloseHandle( hPhysicalDriveIOCTL );
        }
    }
    return bInfoLoaded;
}

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 )
            {
                if( * p < ' ' || * p >= 127 )
                {
                    break;
                }
                ++ p;
            }
            if( * p == 0 )
            {
                * ppBiosAddr = pBiosAddr;
                return ( UINT )iLen;
            }
        }
    }
    return 0;
}

UINT FindAmiBios( BYTE** ppBiosAddr )
{
    BYTE* pBiosAddr = * ppBiosAddr + 0xF478;
    
    BYTE szBiosData[128];
    CopyMemory( szBiosData, pBiosAddr, 127 );
    szBiosData[127] = 0;
    
    int iLen = lstrlen( ( char* )szBiosData );
    if( iLen > 0 && iLen < 128 )
    {
        // Example: "AMI: 51-2300-000000-00101111-030199-"
        if( szBiosData[2] == '-' && szBiosData[7] == '-' )
        {
            BYTE* p = szBiosData;
            while( * p )
            {
                if( * p < ' ' || * p >= 127 )
                {
                    break;
                }
                ++ p;
            }
            if( * p == 0 )
            {
                * ppBiosAddr = pBiosAddr;
                return ( UINT )iLen;
            }
        }
    }
    return 0;
}

UINT FindPhoenixBios( BYTE** ppBiosAddr )
{
    UINT uOffset[3] = { 0x6577, 0x7196, 0x7550 };
    for( UINT i = 0; i < 3; ++ i )
    {
        BYTE* pBiosAddr = * ppBiosAddr + uOffset[i];

        BYTE szBiosData[128];
        CopyMemory( szBiosData, pBiosAddr, 127 );
        szBiosData[127] = 0;

        int iLen = lstrlen( ( char* )szBiosData );
        if( iLen > 0 && iLen < 128 )
        {
            // Example: Phoenix "NITELT0.86B.0044.P11.9910111055"
            if( szBiosData[7] == '.' && szBiosData[11] == '.' )
            {
                BYTE* p = szBiosData;
                while( * p )
                {
                    if( * p < ' ' || * p >= 127 )
                    {
                        break;
                    }
                    ++ p;
                }
                if( * p == 0 )
                {
                    * ppBiosAddr = pBiosAddr;
                    return ( UINT )iLen;
                }
            }
        }
    }
    return 0;
}

    
      // BIOS 编号,支持 AMI, AWARD, PHOENIX
void bios()
{
////	    cout<<"biosinfo:"<<endl;
        SIZE_T ssize; 

        LARGE_INTEGER so; 
        so.LowPart=0x000f0000;
        so.HighPart=0x00000000; 
        ssize=0xffff; 
        wchar_t strPH[30]=L"\\device\\physicalmemory"; 

        DWORD ba=0;

        UNICODE_STRING struniph; 
        struniph.Buffer=strPH; 
        struniph.Length=0x2c; 
        struniph.MaximumLength =0x2e; 

        OBJECT_ATTRIBUTES obj_ar; 
        obj_ar.Attributes =64;
        obj_ar.Length =24;
        obj_ar.ObjectName=&struniph;
        obj_ar.RootDirectory=0; 
        obj_ar.SecurityDescriptor=0; 
        obj_ar.SecurityQualityOfService =0; 

        HMODULE hinstLib = LoadLibrary("ntdll.dll"); 
        ZWOS ZWopenS=(ZWOS)GetProcAddress(hinstLib,"ZwOpenSection"); 
        ZWMV ZWmapV=(ZWMV)GetProcAddress(hinstLib,"ZwMapViewOfSection"); 
        ZWUMV ZWunmapV=(ZWUMV)GetProcAddress(hinstLib,"ZwUnmapViewOfSection"); 
        
        //调用函数,对物理内存进行映射 
        HANDLE hSection; 
        if( 0 == ZWopenS(&hSection,4,&obj_ar) && 
            0 == ZWmapV( 
            ( HANDLE )hSection,   //打开Section时得到的句柄 
            ( HANDLE )0xFFFFFFFF, //将要映射进程的句柄, 
            &ba,                  //映射的基址 
            0,
            0xFFFF,               //分配的大小 
            &so,                  //物理内存的地址 
            &ssize,               //指向读取内存块大小的指针 
            1,                    //子进程的可继承性设定 
            0,                    //分配类型 
            2                     //保护类型 
            ) )
        //执行后会在当前进程的空间开辟一段64k的空间,并把f000:0000到f000:ffff处的内容映射到这里 
        //映射的基址由ba返回,如果映射不再有用,应该用ZwUnmapViewOfSection断开映射 
		{
			//uSystemInfoLen = 68;//////////////////////////////////////////////////////////
            BYTE* pBiosSerial = ( BYTE* )ba;
            UINT uBiosSerialLen = FindAwardBios( &pBiosSerial );
            if( uBiosSerialLen == 0U )
            {
                uBiosSerialLen = FindAmiBios( &pBiosSerial );
                if( uBiosSerialLen == 0U )
                {
                    uBiosSerialLen = FindPhoenixBios( &pBiosSerial );
                }
            }
            if( uBiosSerialLen != 0U )
            {
                CopyMemory( szSystemInfo + uSystemInfoLen, pBiosSerial, uBiosSerialLen );
                uSystemInfoLen += uBiosSerialLen;
//				cout<<"biosinfonum:"<<pBiosSerial<<endl;
            }
            ZWunmapV( ( HANDLE )0xFFFFFFFF, ( void* )ba );
		}

		//szSystemInfo[uSystemInfoLen] = '\0';
}

///////////////////////////////////////////////////////////////////////////////////////////////


  #define   DFP_GET_VERSION   0x00074080     
  #define   DFP_SEND_DRIVE_COMMAND   0x0007c084     
  #define   DFP_RECEIVE_DRIVE_DATA   0x0007c088     
    
void len(char* s, char* b);

  #pragma   pack(1)

  /*+++     
  Global   vars     
  ---*/     
  GETVERSIONOUTPARAMS   vers;     
  SENDCMDINPARAMS   in;     
  SENDCMDOUTPARAMS   out;     
  HANDLE   h;     
  DWORD   i;     
  BYTE   j;     
    
  void   CopyRight(){     
////  cerr<<endl<<"HDD   identifier   v1.0   for   WIN95/98/Me/NT/2000.   written   by   Lu   Lin"<<endl;     
//  cerr<<"For   more   information,   please   visit   Inside   Programming:   http://lu0.126.com"<<endl;     
//  cerr<<"2000.11.3"<<endl<<endl;     
  }     
  VOID   ChangeByteOrder(PCHAR   szString,   USHORT   uscStrSize)     
  {     
    
  USHORT   i;     
  CHAR   temp;     
  for   (i   =   0;   i   <   uscStrSize;   i+=2)     
  {     
    temp   =   szString[i];     
    szString[i]   =   szString[i+1];     
    szString[i+1]   =   temp;     
  }     
  }     
    
  void   DetectIDE(BYTE   bIDEDeviceMap){     
  if   (bIDEDeviceMap&1){     
    if   (bIDEDeviceMap&16){     
//      cout<<"ATAPI   device   is   attached   to   primary   controller,   drive   0."<<endl;     
    }else{     
//      cout<<"IDE   device   is   attached   to   primary   controller,   drive   0."<<endl;     
    }     
  }     
  if   (bIDEDeviceMap&2){     
    if   (bIDEDeviceMap&32){     
//      cout<<"ATAPI   device   is   attached   to   primary   controller,   drive   1."<<endl;     
    }else{     
//      cout<<"IDE   device   is   attached   to   primary   controller,   drive   1."<<endl;     
    }     
  }     
  if   (bIDEDeviceMap&4){     
    if   (bIDEDeviceMap&64){     
//      cout<<"ATAPI   device   is   attached   to   secondary   controller,   drive   0."<<endl;     
    }else{     
//      cout<<"IDE   device   is   attached   to   secondary   controller,   drive   0."<<endl;     
    }     
  }     
  if   (bIDEDeviceMap&8){     
    if   (bIDEDeviceMap&128){     
//      cout<<"ATAPI   device   is   attached   to   secondary   controller,   drive   1."<<endl;     
    }else{     
//      cout<<"IDE   device   is   attached   to   secondary   controller,   drive   1."<<endl;     
    }     

⌨️ 快捷键说明

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