I realize this is a huge question but any insight you can provide will be much appreciated. OK, let's consider a file protected/wrapped by HASP.
What's the general layout of said file? There's a HASP API that's embedded. Is it easily identifiable, i.e. more or less a full module, or is it cut up and distributed throughout the file?
When the file is started, is it decoded in its entirety or does it employ a decode/re-encode scheme? How does it move between layers in the decoder?
What are the passive protections of HASP (e.g. import redirection)?
What are the active protections of HASP (e.g. IsDebuggerPresent())?