Actually, the unpacking part is the least of it. I have a program which I'm trying to crack which was packed with PEcompact 2.x. So I used RL!dePacker to unpack it, and after that I spent the entire night trying to bypass the code where the program reads itself to see if it was tampered with. I finally did it, and now my brain is fried. I'm not sure why I'm posting this, but I feel somewhat proud of myself now. Except now I have to try cracking the registration routine and fry my brain again.
RL!dePacker is an awesome generic unpacker.