You couldn't be further from the truth.
No one is gonna crack your software. There isn't 1% of your customers who could disassemble your software. There isn't 0.1% who could make a crack. Enterprise users don't even run cracked software.
Software licensing is about making as little work as possible to block non paying users. Time spent developing useless counter measures is time not spent selling and developing your product.
A good old key file with only the last payment date will do just fine. Send everyone who didn't pay since last year to your payment page :D
I myself pay for software I know I could of looked up a crack for, but being a developer I know how much effort software development takes I opt to either find an open source alternative or buy the product if reasonably priced. If I can't find a decent alternative and the price is poor, I probably wont use it, whatever it is.
Anything short of that is probably going to be cracked for software that is even modestly popular. I think setting the bar just high enough to keep grandma from breaking it is pretty much just as good as something more sophisticated.
The psychology of it is, you can't stop nefarious users ultimately. But you need something that at least makes honest users take some extra action specifically to crack your software. Making them feel like they are pirating something will stop most honest users.
There have been many companies/independent developers who have used the "warez scene" to intentionally "leak" and distribute their software. As the software gains traction they make it easy for the user to buy a license so they can update the software from within the software. Otherwise the user has to wait until a new cracked copy gets released.
You'll never ever stop anyone from cracking your software but convenience does come at a price.
Also, that user is running some random binary from the internet just not to pay. Without that crack, you would never have had that user.
We built our own stupid-simple licensing system. True, it wasn't that hard, but it would totally be worth $100/mo to have this maintained by somebody else, so we could focus only on our product.
Their competition (FlexLM, etc) is horrific. This looks much better.
On the other hand many things use FlexLM only to provide node-locking which is thing that it can do, but is to some extent an afterthought. The thing was originally designed to be used over network to provide floating licensing, with some minimal resistance to cheating and cracking.
In fact it seems that it's original author(s) (wikipedia says that the whole "team", but it mostly looks like one guy) got fed up with managment and marketing so much that he went on to implement and sell RLM on their own, which mostly seems like slightly better FlexLM without completely nonsensical features.
As somebody who has implemented a custom licensing server it becomes a trade off between ease of use, ease of maintainability and resistance to cracking.
>It seems trivial to issue your own license tokens and have clients check in with your website for an OK / BAD response.
It can be trivial if all it does is tell you if a license is valid or not. But when it comes to adding/removing features in the application based on a single license key and also dealing with offline licensing it becomes less trivial. On top of that, you need to make sure your licensing server doesn't go down. It is just as easy to pay to have it taken care of for you.
I suppose the target for this service are app developers who don't have their own website / server infrastructure. It seems trivial to issue your own license tokens and have clients check in with your website for an OK / BAD response.