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