-
Hardware-IDs sind so lange sinnvoll, wie sie richtig implementiert werden. Vergleiche lassen sich generell leicht umbiegen (Trojka), im Falle der Verschlüsselung mit der Hardware-ID müsste man bruteforcen oder - wie es üblicher ist, Beispiel: Prinzip der Secured Sections - die Daten mit einem richtigen Key entschlüsseln.
Im Trend liegt heutzutage (zu Recht) die Virtualisierung (RLP, EC, TM, WL, SD, SC, SF, ... die Liste lässt sich natürlich noch weiter führen). Was eine virtuelle Maschine im Bezug auf Softwareschutz ist, verrät Google. ;)
-
Vor allem war bei Trojka die Umwandlung der HardwareIDs in Strings total unnötig. Denn arbeiten kann man auch mit Bytearrays - Strings sind dagegen im Speicher viel auffälliger. Und es lief letzendlich alles auf "if HardwareID=einprogammierter String then" hinaus. Da half auch nicht, den eigentlichen Stringcompare zu verschleiern. Btw: wie gesagt: die Tipps von Lazarus aus den 1998gern sind immer noch aktuell ;). Natürlich hat man inzwischen mehr technische möglichkeiten (siehe VMs - früher war die Performance einfach unzureichend). Aber imho sollte erstmal das Konzept gut sein und der technische Kram als netter Zusatz betrachtet werden ;)
-
Gibt übrigens auch nen ziemlich guten Artikel zum Thema Anti-Debugging auf CodeProject (mit code-snippets und erklärungen).
Schau mal hier:
http://www.codeproject.com/KB/securi...gineering.aspx