Về cơ bản, điều này phụ thuộc vào mức độ bạn muốn ghép nối phần mềm của mình với phần cứng cơ bản. Ví dụ bạn có thể nhận được một số thông tin phần cứng từ sổ đăng ký, đọc địa chỉ MAC từ thẻ LAN, truy xuất nhà sản xuất gfx, id CPU, v.v. và băm tất cả các dữ liệu này.
Sau đó, bạn có thể sử dụng mã băm này làm mã số challenge được gửi đến công ty của bạn. Khách hàng sau đó nhận được phiên bản đã ký (với khóa riêng của bạn) của băm này.
Khi khởi động ứng dụng của bạn có thể kiểm tra xem chữ ký của băm có tốt hay xấu (tức là đã được công ty của bạn ký).
Điều này không chỉ liên kết phần mềm của bạn với cấu hình phần cứng nhất định mà còn buộc các trình gỡ rối vá ứng dụng của bạn (vì chúng sẽ cần vá khóa công khai từ tệp thực thi của bạn và thay thế nó để viết keygen). Nhiều người xem xét hai lần cài đặt một crack thu được từ các nguồn khác nhau trái ngược với chỉ cần nhập một nối tiếp hợp lệ sao chép từ một keygen.
Edit:
Để kiểm tra chữ ký của băm, bất cứ điều gì từ RSA qua DSA-ECC có thể được sử dụng. Tôi có thể đề xuất Crypto++ hoặc libTomCrypt cho điều đó.
Lưu ý: thêm thẻ bảo vệ bản sao – newgre