You also need to be a little bit more
realistic about "protecting executables."
A friend of mine owned a very expensive 12-string guitar, which he stored in a
cardboard case with the
tiniest padlock that he could buy. This lock, he said, was "to keep the honest people out."
And that's pretty much what you can expect from software protection: "to keep the honest people out." It provides something that you can sell; something that the
honest user (i.e. a "customer") must buy. It will
not provide "uncrackable security." Not even encryption

will ever do that!
A very smart hacker who is very determined (for some reason) to break into your program
will do so. But the bizzare thing is, having done so, "the challenge of doing so is now gone." He shares his complicated system of patches (or his cracked code) with all of his "warez buddies," who gloatingly write it down, while muttering to each other using odd combinations of letters and digits meant to be read upside-down and backwards

... and then
they move on, too. It is very unlikely, actually, that they will use your program. They were attracted to it in the first place
just to crack it. In other words, they were never
customers in the first place.
Don't let paranoia about "security" interfere with
customers. Don't do things that will inconvenience or irritate
customers. Those are the people who will happily pay you good money. The rest is, well, just what retailers call "shrink." Your store isn't in business for the shoplifters. You need, certainly, to
prevent the shoplifters, but you must
cater to the customers. Always. First.
Me? Well, if it's got a dongle then "no sale." Okay, that's just me, but
that's me, and other customers might feel the same way. If the software has to "call home" in order to register then I need to know that up-front (because I might need to install on a computer with no Internet connection .. they do exist). If it needs or wants to "call home" in order to
run, then once again No Sale. The guiding principle for dealing with
Me is to .. first, kindly
assume that I am honest (don't treat me like a thief), and .. second, make sure that I don't say "No Sale."