Cracking has changed a lot, but also not so much. I love how the basic form is: let the target program load into memory then dump it to disk. Basically the same idea applies to older software protections like ASPack...find the original entry point (where the original executable is loaded up without protection), steal a few bytes to jump to a code cave, and patch whatever you want to patch from the code cave.
also, memory dumpers that can rebase an exe from memory given the original entry point
also, memory dumpers that can rebase an exe from memory given the original entry point