You load the packed program into your favourite debugger and watch it unpack the program. As soon as it enters OEP, you dump, fix, and see if it works
If it doesn't, you debug again and find out why. If it does, you've cracked it.
Once you have done a few, you get to learn bits of the code and you can easily see the code patterns and go "Ahh! This looks like just a modified Armadillo clone!" (for example) and unpack as appropriate.