Makes me sad how many person-years of effort have been wasted over the years on futile dongle-engineering, copy-protection and DRM. They're pretty much all cracked. And the industry keeps insisting on trying!

The industry doesn't want to make software crack proof, they just want to make money. Typically, in the case of games, is is about "when", not "if", they know it will be cracked eventually, but they want to hold long enough to secure their launch sales, which is where they make most of the money. It is even common to remove DRM after a few months, because it is not worth it.

As for enterprise software, pros usually don't want the potential legal trouble associated with cracked software, and dongles are just about not making is easy to violate the licence by accident.

Making games uncrackable is a solved problem: the game runs on the server and the server decides what happens, with the user connecting a client that simply sends input to the server and receives a scene to render.

This has many negative side effects, but if the game doesn't require twitchy reflexes it's usually not very noticable. It's also terrible for preservation.