In unpacking an executable you need to know several things:
1) Identifying the packer, if necessary.
2) Checking for stolen code, if such exists.
3) Checking for API Redirection, if such exists.
4) Fixing VM if there is one applied.
5) Correcting the dump (if header is messed up).
6) Fixing the Import Address Table.
There are more things but these are the most common. Of course there are scripts to do some of these things but they're often a bit light so you can't rely on them everytime
.