Like a dongle, in the olden days they went in the parallel port.
I suppose on a basic level it's just a memory chip that the software addresses in order to run the application. Sometimes the application is running on the hasp though and the PC app is just accessing it. Bound to be copyable, but could range from simple to complete reverse engineering job depending on how complex the device is?