copy protection


I am developing a copy protection for my firmware, that runs on PC.
Till now, ISA cards with it’s own EEProm were used, and security was
based on serial number of cards in system, and storage of security
information into EEprom of those cards.

Now new PCI controller cards don’t have any serial# and no EEProm to
write to.

So I have 2 problems, how to uniquely identify HW that firmware is
running on (serial of HDD, CPU, MAC address ?) and how to store
security information (storage in filesystem won’t be protected agains
making image of disk and restoring it on expiration time)

Any tips, ideas, hints, code snippets would be appreciated

best regards