ecspertiza, Для Винды используй WINIO(http://www.internals.com/utilities/winio.zip) Или:
Код | #define IDENTIFICATOR(cbf) { \ unsigned int int_val, int_val1; \ char string[20 + 1] = "\0"; \ asm mov eax, 0; \ asm cpuid; \ asm mov string[0], bl; \ asm mov string[1], bh; \ asm ror ebx, 16; \ asm mov string[2], bl; \ asm mov string[3], bh; \ asm mov string[4], dl; \ asm mov string[5], dh; \ asm ror edx, 16; \ asm mov string[6], dl; \ asm mov string[7], dh; \ asm mov string[8], cl; \ asm mov string[9], ch; \ asm ror ecx, 16; \ asm mov string[10], cl; \ asm mov string[11], ch; \ asm mov eax, 1; \ asm cpuid; \ asm mov int_val, eax; \ int_val1 = (int_val >> 8); \ memcpy(string + 12, &int_val1, 4); \ asm mov eax, 1; \ asm cpuid; \ asm mov int_val, eax; \ int_val1 = ((int_val >> 4 ) & 0x0000000f); \ memcpy(string + 16, &int_val1, 4); \ string[20] = '\0'; \ char STRING_ID[] = {0x41,0x75,0x74,0x68,0x65,0x6e,0x74,0x69,0x63,0x41,0x4d,0x44,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00}; \ if ( memcmp(string, STRING_ID, 20) != 0 ) { \ (*cbf)("Неверный идентификационный номер !!!"); \ exit(-1); \ } \ }
|
Проверка серийника CPU. |