Привязка к железу
Подскажите пожайлуста можно ли привязать программу к отдельному компу(маме,БИОСу),
т.е. узнать их серийный номер или другую уникальную информацию о железе.
Народ!
Подскажите пожайлуста можно ли привязать программу к отдельному компу(маме,БИОСу),
т.е. узнать их серийный номер или другую уникальную информацию о железе.
Например к HDD.
Следующая программа определит тип HDD и его серийный номер
---CUT---
.Model Tiny
.Code
Base_Port equ 1f0h
HD equ 0 ; Hard Disk number
.Startup
mov dx, Base_Port + 6
mov al, 10100000b or (HD shl 4)
out dx, al
jmp $ + 2
inc dx
mov al, 0ech
out dx, al
jmp $ + 2
@@Wait: in al, dx
jmp $ + 2
test al, 80h
jnz @@Wait
mov dx, Base_Port
lea di, Buffer
mov cx, 100h
@@1: in ax, dx
xchg ah, al
stosw
loop @@1
xor cx, cx
lea dx, Fname
mov ah, 3ch
int 21h
xchg bx, ax
lea dx, Buffer
mov cx, 100h
mov ah, 40h
int 21h
mov ah, 3eh
int 21h
ret
Fname db 'hdd_id.dat', 0
Buffer db 100h dup (?)
end
---CUT---
В Win можно привязать к PCI устройствам, список PCI устройств можно получить из реестра:
Win'2000 HKLM/System/CurrentControlSet/Enum/PCI/
Для Win9x HKLM/Enum/PCI/
Дату BIOS можно прочитать и так (только под Win'9X):
var
p : pointer;
buffer : array[0..20] of char;
Stroka : PChar;
begin
FillChar(buffer,20,0);
p := Pointer($0FFFF5);
Move(p^,buffer[0],8);
Stroka:=@buffer;
label1.Caption := String(Stroka);
end;
А еще можно считать 64K начиная с адреса F000:0000h. Там лежит инфа о системе.