Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› CPUID
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение


Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 03 мая 2006 05:05
· Личное сообщение · #1

Вопрос по CPUID.

Есть такой код, который мне когда-то дал Asterix. Код позволяет получить идентификатор процессора.


MOV EAX,1
CPUID
AND EDX,20000
PUSHAD
MOV EAX,1
CPUID
PUSH EAX
MOV EAX,3
CPUID
POP EAX
MOV EBX,EAX
SHR EBX,10
AND EAX,0FFFF
MOV ESI,EDX
SHR ESI,10
AND EDX,0FFFF
MOV EDI,ECX
SHR EDI,10
AND ECX,0FFFF


Вопрос такой. На каких процессорах это будет реально именно идентификатор.
Как это будет на AMD. То есть можно ли положится на то, что на разных компах не будет одинаковых идентификаторов, полученных данным кодом?



Ранг: 36.8 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 03 мая 2006 12:26 · Поправил: NeoTall
· Личное сообщение · #2

WELL пишет:

MOV EAX,1
CPUID
AND EDX,20000
<<<===
PUSHAD
MOV EAX,1
.......


Кстати, здесь прыжка нет...




Ранг: 328.7 (мудрец), 73thx
Активность: 0.170.01
Статус: Участник

Создано: 03 мая 2006 12:27
· Личное сообщение · #3

и еще справку с места работы не забудьте




Ранг: 108.4 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 03 мая 2006 12:28 · Поправил: YoriCH
· Личное сообщение · #4

0000-0F34-0000-0000-0000-0000
Pentium 4 3.0 Ghz FSB800 Soc478 1024k

-----
Есть вопросы ко мне? В личку!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 03 мая 2006 12:34
· Личное сообщение · #5

Celeron 2,6
---------------------------
Processor Serial Number
---------------------------
0000-0F41-0000-0000-0000-0000
---------------------------
ОК
---------------------------

-----
Yann Tiersen best and do not fuck





Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 03 мая 2006 12:34
· Личное сообщение · #6

Processor: p4 3000 МГц 1 Мб кеш
Processor Serial Number: 0000-0F41-0000-0000-0000-0000

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться





Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 03 мая 2006 12:35
· Личное сообщение · #7

PE_Kill, интересное совпадение...

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться




Ранг: 36.8 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 03 мая 2006 12:47
· Личное сообщение · #8

ValdiS пишет:
PE_Kill, интересное совпадение...


А еще на первой странице у AngelDance




Ранг: 120.6 (ветеран)
Активность: 0.090
Статус: Участник
rootkit developer

Создано: 03 мая 2006 12:53
· Личное сообщение · #9

Процессор имеет серийник длиной 69 бит, причем старшая часть - идентификатор типа процессора, а остальное уже сам серийник. Так что у тех, у кого младшая часть 0000-0000-0000-0000, получение серийника запрещено.

-----
Скажем дружно - нафиг нужно.




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 03 мая 2006 12:55
· Личное сообщение · #10

www.ixbt.com/cpu/id-errata-intel.html
Здесь подробности про ID процессора. Т.к. он может быть считан по SMBus, то не исключено что можно его выцарапать. Еще вспомнил, что Микрософтовский линкер "закладывает" этот ID в зашифрованном виде в exe-файл в районе кодового слова Rich по адресу A0.



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 03 мая 2006 13:06
· Личное сообщение · #11

program Project1;
uses
Windows;
const szFmt : PChar = '%04X-%04X-%04X-%04X-%04X-%04X' + #0;
szCap : PChar = 'Processor Serial Number' + #0;
szErr : PChar = 'Processor Serial Number feature is not available' + #0;
var buffer:array [1..$80] of byte;

begin
asm
MOV EAX,1
db 00Fh, 0A2h // CPUID
AND EDX,20000h
JE @error
PUSHAD
MOV EAX,1
db 00Fh, 0A2h // CPUID
PUSH EAX
MOV EAX,3
db 00Fh, 0A2h // CPUID
POP EAX
MOV EBX,EAX
SHR EBX,10h
AND EAX,0FFFFh
MOV ESI,EDX
SHR ESI,10h
AND EDX,0FFFFh
MOV EDI,ECX
SHR EDI,10h
AND ECX,0FFFFh
PUSH ECX
PUSH EDI
PUSH EDX
PUSH ESI
PUSH EAX
PUSH EBX
PUSH szFmt
PUSH OFFSET buffer
CALL wsprintf
ADD ESP,20h
PUSH 0
PUSH szCap
PUSH OFFSET buffer
PUSH 0
CALL MessageBox
POPAD
JMP @end
@error:
PUSH 0
PUSH 0
PUSH szErr
PUSH 0
CALL MessageBox
@end:
end;
end.



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 03 мая 2006 13:08
· Личное сообщение · #12

---------------------------
Processor Serial Number
---------------------------
0002-0FF0-0000-0000-0000-0000
---------------------------
AMD64 3200+




Ранг: 104.1 (ветеран)
Активность: 0.070
Статус: Участник
искатель истЕны

Создано: 03 мая 2006 13:14
· Личное сообщение · #13

Cel 800
0000-068A-0C04-0481-0000-0000



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 03 мая 2006 13:18
· Личное сообщение · #14

Ms-Rem

на AMD "по жизни" там нули



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 03 мая 2006 13:54
· Личное сообщение · #15

Asterix пишет:
MOV EAX,3
db 00Fh, 0A2h // CPUID
POP EAX

Я смотрел под olly. После CPUID c EAX=3 в EAX кое-что есть.
Может все-таки зря POP EAX. Тем более, что со стека вытаскиваем Family,Model,Stepping - то что никогда не запрещено и наверняка известно.



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 03 мая 2006 14:13
· Личное сообщение · #16

Output of CPUID if EAX = 3
Lower 64-bits of the 96-bit processor serial number
____31_________________________________________________0
EAX | Reserved
-------------------------------------------------------
EBX | Reserved
-------------------------------------------------------
ECX | Bits 31-00 of the 96 bit processor serial number
-------------------------------------------------------
EDX | Bits 63-32 of the 96 bit processor serial number



Ранг: 21.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 03 мая 2006 14:37
· Личное сообщение · #17

0002-0FF2-0000-0000-0000
A64 3500



Ранг: 5.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 мая 2006 15:10
· Личное сообщение · #18

Athlon 2200+
0000-06A0-0000-0000-0000-0000



Ранг: 160.1 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 03 мая 2006 15:49 · Поправил: infern0
· Личное сообщение · #19

Asterix
processor serial number (PSN) is not supported in the Pentium 4 processor or later Sea AP-485, Intel Processor Identification and the CPUID Instruction (Order Number 241618) for more informtaion on PSN




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 03 мая 2006 16:51
· Личное сообщение · #20

У nice иcrazyalex одинаковые на целике 2.0




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 03 мая 2006 17:01
· Личное сообщение · #21

Упс. Не заметил, что уже вторая страница в топике

infern0 пишет:
processor serial number (PSN) is not supported in the Pentium 4 processor or later Sea AP-485, Intel Processor Identification and the CPUID Instruction (Order Number 241618) for more informtaion on PSN

А что это значит? В П4 получение серийника через cpuid вообще не поддерживается или что?

Вообще совпадений много

Блин получается таким образом к процессору не привязаться
Что же делать тогда?
Хоть как-нибудь можно получить уникальные характеристика проца, которые не будут совпадать у одинаковых процов?



Ранг: 74.4 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 03 мая 2006 17:05
· Личное сообщение · #22

Целка 2.4

0000-0F33-0000-0000-0000-0000



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 03 мая 2006 17:07
· Личное сообщение · #23

infern0
Как раз таки и скачал его - 241618 . Действительно там это написано, а чуть ниже предлагается
проверять PSN feature flag. Получается бессмыслица, т.к. между П-3 и П-4 ничего не было - зачем флаг проверять. А вот если "not" убрать - все станет на свои места, т.к. действительно запрос серийного номера через CPUID был введен начиная с П-4 и позже, но на всякий случай - проверяйте флаг.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 03 мая 2006 17:25
· Личное сообщение · #24

WELL пишет:
Хоть как-нибудь можно получить уникальные характеристика проца, которые не будут совпадать у одинаковых процов?

Так поэкспериментируй с EAX, который якобы резерв. Кстати, не странно ли что ECX у всех 0 ?!
Хотя сейчас нашел в установщике Intel Fortran-a 8.0 чтение PSN - там проверяют флаг и после берут ECX:EDX




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 03 мая 2006 17:42
· Личное сообщение · #25

Кстати не нашел у себя в биосе где включить/выключить возможность процу давать свой серийник.
Биос AWARD.

P.S. У меня Celeron 2.4
0000-0F29-003B-7040-0000-0000



Ранг: 71.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 03 мая 2006 17:59
· Личное сообщение · #26

P4 1700 Gz
0000-0F12-007A-7040-0000-0000




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 03 мая 2006 18:02
· Личное сообщение · #27

Вот ещё что.

После

mov eax, 1
cpuid

В ecx у меня 00004400 появляется.
Это нигде не используется и я что-то не нашел что это такое.




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 03 мая 2006 18:40
· Личное сообщение · #28

Хм. Судя по описанию, после вызова

mov eax, 0
cpuid

в EAX возвращается максимально допустимое значение параметра вызова.

У меня eax=00000002.
То есть

mov eax, 3
cpuid

на моем компе вообще что ли вызывать нельзя??? Гон какой-то...



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 03 мая 2006 19:47
· Личное сообщение · #29

WELL пишет:
Гон какой-то...

Вот-вот. Флаг PSN=0, фукции 3 нет, а что-то выдает
У меня кстати тоже 2. Видимо, все-таки была выпущена куча партий П-4 с PSN и они утекли на "восток"
Вот теперь можно написать вируса, который не будет трогать русских.
На exetools-e надо потрясти буржуев : есть такие процы у них или нет.
Тут конечно еще от прошивки БИОС-а многое зависит.
===========================
ЕСХ после CPUID(1) описан в доках.
Table 6. Feature Flag Values Reported in the ECX Register
Bit Name Description when Flag = 1
0 SSE3 Streaming SIMD Extensions The processor supports the Streaming SIMD Extensions 3 instructions.
2:1 Reserved Do not count on their value.
3 MONITOR MONITOR/MWAIT The processor supports the MONITOR and MWAIT instructions.
4 DS-CPL CPL Qualified Debug Store The processor supports the extensions to the Debug Store feature
to allow for branch message storage qualified by CPL.
6:5 Reserved Do not count on their value.
7 EIST Enhanced Intel SpeedStep® The processor implements the second-generation Intel SpeedStep
technology technology feature.
8 TM2 Thermal Monitor 2 The processor implements the Thermal Monitor 2 thermal control
circuit (TCC).
9 Reserved Do not count on their value.
10 CID Context ID The L1 data cache mode can be set to either adaptive mode or
shared mode by the BIOS.
13:11 Reserved Do not count on their value.
14 xTPR Send Task Priority The processor supports the ability to disable sending Task Priority
Messages messages. When this feature flag is set, Task Priority messages
may be disabled. Bit 23 (Echo TPR disable) in the
IA32_MISC_ENABLE MSR controls the sending of Task Priority
messages.
31:15 Reserved Do not count on their value.



Ранг: 160.1 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 03 мая 2006 21:34
· Личное сообщение · #30

WELL пишет:
на моем компе вообще что ли вызывать нельзя??? Гон какой-то..

можно, но результат undefined
мусор т.е. вернется
WELL пишет:
В П4 получение серийника через cpuid вообще не поддерживается

именно так. Серийник появился в п3 потом начали возмущатся и сначала ввели бит блокировки по быстрому а в п4 и последующих процах вообще убрали серийник.



Ранг: 36.8 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 03 мая 2006 21:55
· Личное сообщение · #31

Привет...

Может я щас че не по теме напишу, так что сильно не пинайте...
Нашел у себя исходники на Дельфах "CPUID unit adaptated for KOL by TR"]F [Revenge Crew]". Вот кусок кода, все он нормально определяет на P4...

TCPUIDARRAY=array[1..4] of Longint;

function GetCPUID : TCPUIDARRAY; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Result}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
MOV EAX,EBX
STOSD {CPUID[2]}
MOV EAX,ECX
STOSD {CPUID[3]}
MOV EAX,EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;



<< . 1 . 2 . 3 . >>
 eXeL@B —› Программирование —› CPUID
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати