The answer is a clear NO. Whatever protection you do could still be improved if so desired.
The question is a little bit unclear, as there are many different protections possible.
- protect against reverse engineering
- protect against executing on the wrong computer
- protect against copying
- protect against modifications.
whatever method is best for one purpose may not be best for some other purpose.
When you know what you are against, you are really in a better situation to make a good protection.
You could also say there is no perfect protection, as any protection can be broken. But maybe that doesn't matter: maybe the time to brake a particular protection with todays computer-speeds is similar to the age of the universe? Maybe the protection is just good enough to protect your executable until the protection is no more needed. Maybe it is just good enough so that an attacker gives up just before suceeding? Maybe it makes it just hard enough so that an attacker chooses to work on an another program. Maybe it is broken within minutes after a release...
In practice: Unless you are a seasoned protection engeneer or very good hacker and reverse engineer, your protection will be broken in surprisingly short time. On the other side, if you understand what you are doing: Know what compilers generate, know what is hard to reverse engineer, know the program to be protected, know the machine architecture, build the protection in from the beginning, or use some professional protection tools, understand the applications performance requirements, you can keep more or less everybody out. There is some debate about that. Before a protection finally is cracked, protectors err by thinking is too hard; reverse engineers err by thinking it is too easy. Actually when you create high-end protections you might never know, as attackers for high-end stuff won't tell you if/when they succeeded.
There are plenty of tools to help making protections, the price range for such tools goes from free to astronomical. I don't know whether this discussion list allows me to name companies. If you want to find out mine, or any other, google for tamper-proofing.