Specifically, the crack modifies some of our binaries to circumvent the activation process and allows bogus registration keys. Pretty standard stuff AFAIK. Thankfully, our digital signatures are lost in the process, so that's reassuring.
We haven't done the most thorough search of how widespread the issue is, but we've estimated that it's about 1 user per day since the early half of 2022. A license costs a few thousand dollars, but we do regional pricing and bulk licenses for larger firms. We also provide free licenses to academics (with proof).
For context, we are a <15 person company where we all wear multiple hats and would like to continue providing great service, training and introducing features. It's clear to us why someone would crack our software, especially in lower income countries.
I'm not entirely sure what other information would be helpful to provide, but I was wondering if anyone has run into this into the past, and how it was mitigated. While we'll always have some piracy, we'd like to keep it to a minimum.
As to what to do about it, there are two basic tracks, neither of which is incompatible with the other:
1. The legal route: notifying distribution sites that they're hosting content in violation of copyright law, requesting takedown, and if required, demanding such (with a DMCA notice or similar). If a distributor is unresponsive to both, DMCA Google, Bing, etc. to at least suppress the cracks in most search results;
2. Having some fun with it: make sure that a special page on your own site becomes the #1 search engine result for " But above all, make sure not to confuse a "pirated copy" with a "lost sale". In 99% of cases, the Venn diagram of those has very little overlapping area.
- Let hobbyists and tiny companies pirate your software. You don't have to encourage it, but you can still turn a blind eye. They weren't going to pay you anyways, and this is a good way to get people familiar with your products.
- Ruthlessly go after mid-large sized companies if you find their employees pirating your software. They have money to pay, and will be happy to do so (at least in the face of legal threats).
The interesting part is that the first demographic (students, hobbyists, tiny companies) directly feeds into the second when they start working corporate jobs. So in that sense piracy is sometimes a key part of the sales funnel. This is exactly how companies like Microsoft and Adobe have been able to maintain complete hold on the market.
They fight pirating, and that prevents it from becoming absolutely endemic, but they don’t really lose massive amounts of sleep over the cracks, because every cracked copy is training people to use their software.
Sort of “The Old Dope Peddler” model.
It’s not really correct to assume every cracked copy is a lost sale.
Instead, think of it as indoctrination of possible future sales.
The user who is willing to stomach the time and risks associated with cracked software is NOT your target market anyway.
This is essentially a free trial program for “aspirational users” who will circulate it for you.
I’ve had my software (games) pirated, and been a pirate in my youth. Now I wouldn’t consider pirating because I have more money than time now. I suspect your actual addressable market is in the same boat.
The worst thing you can do is add draconian copy protection that adds friction to your product for actual paying users.
1) Typically obfuscation is not used, but even when it is used, it's easy to find what you're looking for. They're going to be using JCE or BouncyCastle for encryption. Look for the relevant classes.
2) The key is nearly always hard coded as a string constant that is not unique to the installation or customer. Super easy, and often discoverable with just the 'strings' command line utility. I would find your concats of chars and other silly schemes if you did that, but it would slow me down a bit.
3) IV is never used correctly with AES. It's always a static value, usually 0.
4) License keys are usually encrypted with the same scheme, but their format of entitlements takes some extra effort to discover. I occasionally must reverse engineer this as well to understand the limitations. For example, stupid licenses lock to IP address or a BIOS uuid, complicating a disaster recovery plan.
My favorite encounter was a class file, in the spirit of OOP, dedicated to licenses (ie License.class). It was not obfuscated in any way and had both the load() and save() methods included. All one must do is write your own Java class (or use Groovy interpreter), include the vendor jar in your classpath, set your license entitles and call save().
A real WTF is that SAP will encrypt the contents of _your_ database with simple substitution ciphers. If you want to query it for insight, you're going to need their simple character shifting/replacing scheme.
Then, when the user gets activated, I used that as one of two pieces to recover the hash function to decode those secrets.
Still circumventable, but requires more complexity than simply skipping the activation check, because simply omitting some code doesn't cause it to work.
It's been shown time and again in gaming no matter what you do people will crack it and your measures to stop them will have more negative impact on your paying customers than it does on pirates, see Denuvo.
Honestly, the best thing is probably working on your conversion funnel to understand why you aren't converting people from pirates to purchasers.
If individuals run it, eh who cares. There's a not insignificant amount of people who want to see if the real version would actually work. And see if it'll run on WINE or whatever. Pissing off individuals is how you get to be known as bad.
And then there's companies who run it pirated. Those are juicy targets. You dont even need to be mean. "We saw that your company appreciates the trial of our software on X machines for Y days, and would like to engage in licensing for your department/company."
Build multiple telemetry code paths in your code — if you can just get IP addresses of offenders you’ll have way more info than now.
Some general answers:
- An important point that I missed: we offer trial licenses.
- If necessary, we work with the customer to establish payment plans. Apparently it even happened today!
- The crack is being hosted on a site dedicated to cracked software, so I'm not sure if DMCA applies. (I'll have to read up on it.)
I'll take note of those who offered some help in case we'd like to work with you.
(Edit: Fixed comment layout for legibility.)
Defeat the crack when you put out new versions, create more complex protection and obfuscation, but make the more complex check only after a few weeks of running the software. Most crackers develop a crack and when it works release the program, so any kind of delays and double and triple license checks defeat them for a while. Make sure to never tell the user "this software is cracked." Instead, make it fail with obscure errors or work only partially. Be surprised by the support requests you get from users of the cracked version. Put out your own fake cracks with complicated installation instructions that sort of work, but not fully, etc.
Repeat indefinitely, with many releases. Do not ever use any intrusive DRM or hacks like installation of licenses in "secret" places, system modifications, etc., and make 100% sure your legit users have a perfect experience all the time.
Basically, it's a cat-and-mouse game whose goal is to frustrate the users of the crack. At the same time, consider giving legit users better deals and more flexible pricing options. Maybe you can even give away older versions of the software for free or cheap.
Finally, please remain polite even to users of the cracked version (they'll be on forums asking for help). Most of them simply do not have the money to buy a license, but might become legit customers later in their life when they earn more money. Some of them also aren't serious users, i.e., no future customers anyway.
The reason is that we noticed some paying users were cracking it, too, because our licensing system didn't allow dual boot or having a workstation and a laptop.
But our licenses were supposed to be per user and people wanted to carry our software around with them. If setup correctly, the same USB stick is now used both as licensing dongle and it also contains installers for Windows and Mac.
Piracy is the natural order of things, and likely isn't hurting sales at all as counter-intuitive as that seems.
You could perhaps offer cheaper versions in lower income countries, but if you try to 'beat' piracy too much, you're just going to lower the overall user experience of your software.
Present time the solution for many is the phone home route with the idea that their client's system is online always. The other goto was to contract a service that specialises in tracking down any unauthorised versions and contacting site admins - but IMO the web is so diverse these days it's simply not worth the money.
I would say if software is intriguing and works well, more often there will be a 'cracked' version on the web somewhere. I know many people see the pirating as lost profit, but more often there's a stark reality, they were never going to afford it in the first place - in which case it's not money lost but software getting exposure which might lead to more sales by those who've seen it in action. I've also seen absolute rubbish that had more money and time spent on protecting the ever so precious contents, that's been cracked only to allow curious users to see what a lemon it was.
Without knowing specifics of your software (language, platform, etc.) it's hard to advice on the protection scheme, but a simple option for compiled Windows binaries would be something like VMProtect (which is what Denuvo protection is based on). This will dramatically increase the amount of effort needed for a crack. On the flip side it may also increase the amount of false positives from anti-viruses and security software, but an EV sig on the binaries and a smaller installation base should easily offset that.
Also, it's worth keeping in mind that there are two classes of cracks. One is done for (basically) the street cred and another is the paid-for cracks. The vast majority of cracks are of the first kind, done by people on the warez scene. They tend to go after easy targets and will give up when there's more to the crack than nop'ing a couple of IFs or patching a couple of functions via a proxy DLL. So even a little friction here will go a very long way.
Something as simple as periodically re-verifying your license at random intervals using independent copies of your license validation code would be a good start. Ditto for checking the signature on your binaries. Never displaying the result of failed validation immediately, but always delaying it a bit. We are aiming at irritating, frustrating and wasting their time.
Despite of some people say, you can cripple your software if you detect it's running an "altered" version. The counter-argument goes that this will cause users of cracked versions assume that your software is of a poor quality, this information will spread and taint your reputation. This is 100% b/s. In reality every single user of cracked software is perfectly aware of incomplete cracks, so when a cracked version malfunctions, they know why.
If your program phones back home, e.g. to check for updates, make it report the hash of its binary and a license, and then allow crippling the install remotely. Among other wonderful uses, this allows messing with someone who is in the process of cracking your software, in real-time. Really dirty, but super effective.
Or you can do nothing, lay back and relax. But where's fun in that?
It's an arms race and the best thing you can do is redesign your activation process. There are certain ways to do this that make it increasingly difficult to get around it.
It's like computer security in a way... You cant ultimately solve the problem but you can make it so difficult to do that the time investment required is probably not worthwhile for an attacker.
We never took it too serious. You don't have to lose sleep over it but you also shouldn't completely ignore it. Just refactoring the copy protection ever few release cycles. Most of the cracks were using Windows APIs to access entrypoints to flip variables. Simply renaming, moving them, or adding removing properties was enough to throw them off for a while.
We figured out some of our customers were using cracked editions without paying for more seats. The support calls were interesting because we told them the bug was fixed but they were super reluctant to update. We'd pass the message off to the accounts managers and let them wrangle with it. This was more prevalent in developing countries where pirating for business use wasn't considered a big deal.
I tried to bring up a low cost edition at our company meeting but it was shot down. The numbers wouldn't work. Business users get training provided; casual users would swamp our helpdesk in lieu of actual training.
The plan should always be to get those pirated users into actual users, unless the country they're in is embargoed, funny story. From reading the piracy forum thread I found many were using our software for job training in hopes of gaining foothold in the field. Similar to how Photoshop was everywhere in the early web design days.
This isn't a strong ethical argument from me, but a practical one - if it wouldn't lose money and may help get more in then either ignoring the piracy or making it irrelevant would be a very simple solution.
The more they tape it, pass it around, and talk about it, the more you'll sell.
It your case, you might put a better cracked version on pirate sites with subtle messaging you want shared. Because some of them will tell people that work places that will pay, and some of them will take jobs at places that will pay.
Cheapest mass marketing you'll ever get.
I sometimes reverse engineer things for fun or curiosity, though I don't generally use or redistribute it. TBH I don't understand the psychology of licensing/pricing. Some commercial software is excellent and seems worth every penny the vendors ask for (and I am happy to pay for such software). I've seen a few products that cost thousands to license and are just dreadful. I have the impression that such products are sometimes not intended to be marketed as such, but their usage is licensed as part of a consulting deal, effectively borrowing the academic reputation of the person behind it.
You indeed get some users from piracy. Some of our legitimate users asked for a Russian localization because they've seen images of our GUI in Russian online and bought it for that. In my estimation, the number of clients you get from piracy about equals the number of clients you lose to it. Many people online say that those who pirate would never be your users anyway, but some users with an inelastic need for your software will prefer piracy if it is easy.
Moving your features to your servers will significantly reduce piracy. Sometimes that is not feasible. In that case, you can issue cryptographic tokens from your server to perform operations on client machines. With enough effort, that can be worked around, but you can make it difficult enough so that the inelastic users will buy the software.
It depends on what kind of software you make, but you could also license it cheaply in some regions with a special licensing agreement. In exchange, you could ask your clients to advertise you in their products (logo in movie credits, splash screen in a video game), or you could add royalty payment terms.
You could also think about flipping your business model upside down and, rather than focusing on great customer experience, focusing on getting as many software units out there at a lower price. A price that may be more affordable for the lower income countries. Do you know your marginal revenues and marginal costs? What happens if you drop your marginal costs by 80% by moving your training online, slowing down customer support, and drop your price by 50%? What would be the % growth of units bought? Maybe, in the end, that could be a profitable transition and would eliminate piracy.
But overall... I don't know how many pirates you'll be able to convert. In my professional experience, sometimes you can get a bigger ROI on effort spent in other areas than fighting piracy. There is no silver bullet for piracy; otherwise, it would not exist.
After I shut down and stopped distribution, some other Chinese crackers kept the app alive and going via both cracking AND forcing in Chinese translations for the whole app. I loved to see that forum thread continue for years after I had moved on.
1) Publish your own cracked version that has a survey that allows you to determine who is using the cracked version. Use the survey to figure out if it make sense to create a special version (lower price and few features) or special pricing for those users (see #3 below).
2) Move some key logic to a server so a cracked version would need to use your server for some part of an important feature.
3) Consider a subscription funded version of your product. If a user only needs your tool for one week and will not use it again for months, then it would allow them to pay a fraction of the purchase price.
You're still losing out on sales, but cracked software often originates in those same low-income countries. They get to have their free copies, and it's a likely bet that your customers in wealthier parts of the world will just buy the license instead of attempting to crack it themselves.
It is a waste of your time and you will be in a forever game of cat and mouse.
Only a small percentage of people who pirate it are likely to be paying customers if they couldn't pirate it. So the real revenue loss is likely minimal. (Without know more about what the software does it's hard to make generalizations about the target market, though.) And you never know when someone who was able to use/learn the software by pirating it will be in a position to turn around and recommend to their employers or friends your product and those entities will actually buy it.
If there's a specific site or forum online where the crack is being distributed, you can always at least just send a DMCA takedown notice, but overall it's probably not worth spending much time or money worrying about it unless you have real data showing significant missed revenue opportunities (which is at most a tiny fraction of the number of people who pirate the software).
If you can update future versions of the software to not be cracked by the existing mechanism, BUT NOT AT THE EXPENSE OF CAUSING HASSLE FOR REAL CUSTOMERS WHO ARE UPGRADING, you could do that too.
Technically, it's very hard to stop a determined cracker once they get your binary. VMProtect, Themida or other strong packers maybe to some extent can, but those do degrade user experience, so not really popular for professional software. Dongle based solutions by Gemalto or Wibu? They are expensive. One need to physically post the dongles. And they are still crackable unless one have been really carefully implementing the protection scheme (never seen one yet).
See how the cracker's tools (well, reverse engineering tools) are protecting themselves: IDA and JEB Pro are two prominent examples, they don't get pirated until someone leaked the installer. They watermark their distributions, and then they can trace who leaked the binary and act accordingly.
2. Downloaders of cracks are not 1:1 with buyers. Overwhelmingly people buy legitimate software if their business actually relies on it. If Photoshop cracks didn't exist there would be far less professional users.
3. You cannot remove it from the net. Any legal attempts are a waste of money, you will only ever catch the lowest quality users, and trying to go after them in court will not only cost more, but will put your company on the permanent shit list - meaning more clout, more notoriety for cracking future versions.
4. Congrats, you've made a product people want. Focus on making it better, and buyers will come. If you focus on drm and fall into the trap of "theft prevention", you will ultimately end up locking your legitimate customers out before the crackers. Crackers don't play by your rules.
5. If you do actually see a tangible and significant hit in profits, then tie your software to online services. Can't crack what isn't executed locally. This will again reduce quality for legitimate customers.
When you are ready to release the next version of your software, you simultaneously release 50+ “cracked” versions of the software on as many pirate sites as you can find.
The trick is that the “cracked” versions of the software is actually just demo versions that will stop working after some time and prompt you to buy the real thing.
You also add comments to pirate sites on all really cracked versions of the software claiming that the cracked software erased your hard disk, that the software is trying to black mail you, that it was cracked by interpol to catch pirates etc. etc.
Of course using hundreds of different user names to hide the fact that it is really your company doing it.
And you of course reuse “real” pirate names and claim that those other users are fake and/or police traps.
And even better: use an AI to automate all of this. Make it really expensive and frustrating to try and get a cracked version of your code.
You are welcome.
Circumventing licensing restrictions, “sharing” keys, customers pretending to be other customers to avoid paying support agreements, I’ve seen it all. Some people view avoiding paying you as a legitimate way to do business, and will happily do so if they can get away with it.
One mechanism to prevent this that actually works, is having a chunk of your functionality “cloud based”. Put new functionality server side and piracy loses its value. Make it so that the upgrade mechanism is through their account. Generally, stop thinking in terms of “registration” and start thinking in terms of “licence to access services”.
Most other mechanisms are legal rather than technical, but these are hardest to pursue in the countries where piracy revenue loss will be most prevalent.
None of the people using the cracked version would be potential current customers, but later on down the line they might become customers when they move to an environment where using a cracked version is not doable.
Student movie tickets are cheaper, even though the seat taken is the same. This is done so students will spend some money instead of none, without reducing the price that other segments will pay.
Although you get no revenue from piracy, you do get people trained on the software, integrated into their workflow and infrastructure, advertising and promotion - it helps your product become the standard. They may later become paying customers. It denies oxygen to competitors.
Apparently, adobe turns a blind eye to piracy of photoshop, for reasons like these.
But to repeat: this mightn't be appropriate for your case. Are there such network effects? Would you benefit from them, over time? Is there some trigger for actual purchase?
If it's on BitTorrent, you can get crazy about it and monitor people who share it and send them letters/notify their ISP, but I think that's a lost cause.
Similarly with other P2P networks, you often make direct connections with sharers, and you can use IP addresses to report them to ISPs.
That or you can do what studios/rights holders so with movies and poison the well with broken downloads, bogus files, etc.
You can obfuscate binaries, it's just a matter of how determined crackers are and how much effort they want to expend cracking them.
If you want to prevent this, tie your product into remote services that require authentication with your servers. New features are now implemented in the cloud, and the binaries you ship are just clients to those remote features.
Code something that detects the tampering and either sends the info about it somewhere (that might not work if they just not allowed firewall out tho), then you might be able to send a letter to company (if that is company not just some random non-professional user). Probably illegal in EU tho.
Or just have it display delayed warning/info notice about software being illegal and where you can buy legal copy. Disabling software is probably pointless (if it stops it from working they will find way around), but just "using this is illegal and can get you in trouble, contact with us to buy a legal copy, we offer bulk discounts" migtht get you some
This actually happened to me with NieR: Automata. I downloaded it for free, played for 60 Hours, then discovered that the CREDITS were a playable minigame which was not feasible to beat alone, requiring Network Connectivity to gain helping partners. These just being basic AI named after other players' save files.
So then 2 years later I BOUGHT Automata, played another 50 hours or so, and finally beat the Credits :) Then bought some DLC so my friend could experience it with Steam Share through my account...
Now congratulate yourself that people are willing to jump through hoops to use your software, I guess?
The reason that I pay for all software I can afford, and run the REALLY expensive stuff in an isolated VM, is ransomware. If I were to search for the latest version of a program on torrent sites and forums, and I found it and installed it, and then +1 day + the next time I opened it, it "updated" with ransomware that the cracker included... well, I'd be real unhappy and make sure to warn people with negative reviews on the crack sites. There are ransomware as a service providers now that pay a large percentage of any payments... It's everywhere!
Piracy is a compliment. Piracy is a form of free advertising. Your core customers will remain yours anyway. But you have to close the open breaches from time to time, gradually narrowing the attack surface. This will help you remain profitable.
You may need some tools to help you win that game. Obfuscators/protectors may be of some help. For instance, code virtualization is a pretty decent technique to deter most attacks of such kind.
Some developers I know and will not name have been known to leak their own cracked copies of their product, just to ensure that there is something broken about them that easily identifies them as a cracked copy.
If the cracked software gets downloaded a lot then maybe there's another mass market that will pay tens to hundreds of dollars for your software. If that happens then it might be worth releasing a new version of your product at a lower price point for those customers.
So you mean the software has been digitally signed? If it is signed how is it possible that it is cracked? Isn't even a slight modification of the binaries will render the software unusable if it is signed? I have a software that is signed digitally and the certificate private/public key is supposedly takes some hundred billion years on average to crack. So what is the point of signing a software?
Demonizing and chasing people who pirate will only work against you, just like it happens with gaming.
Consider the pirate version a "trial" for people who are considering whether to buy the official version. Again, many with gaming do this.
Don't feel bad. In all seriousness, piracy is probably helping you spread the word and get people to try your project.
I remember any tech-savy/media kid was obsessed with getting Adobe products... but no way could they ever afford a license like that. I don't think it would be as big as it is today without kids/younger generation getting their hands on it somehow.
Make sure you have a plan for when that eventually happens. Some of those people can be converted to paying customers, but the rest can at least tell you where they got it.
You may want to consider Software Protection and Licensing from a vendor and not roll it yourself.
The high end versions of these solutions accomplish binary protection and encryption quite well and can require things like a token or hardware dongle to utilize the software.
Additionally given you've been pirated already, from a business perspective a freemium model might be helpful for converting pirate customers to real customers.
Hope it works out for your business!
And make them recrack the latest version by changing the function which accepts serials, etc.
Note: As others have mentioned, it's going to be tough to win the arms race against someone with defeating your checks. So drive consumers to want the real thing by providing a value add.
I don't have answers but I have a few unusual ideas.
I would suggest (perhaps as a "fun" way of dealing with it) looking into The Legend of Spyro style copy-protection. This is where, rather than just depending on the small activation component, there are small checks throughout your code that cause little inexplicable annoyances constantly if a pirated copy is found. Maybe people try to print things and 1/3 of the page is blank. Maybe they try to save files and there's a 1-in-100 chance of total corruption. Checks like these, when widely distributed through the code, obfuscated, and having different things they look for, can sometimes be a major PITA to fully detect and remove. If a pirate feels that getting an initial cracked copy is easy, but getting all the bugs out is miserable...
Another possibility is the "great service, training and introducing features." Pirated copies shouldn't provide access to your training material or any customer support if possible (make it a bit of an enigma to use sometimes). If the pirate has a question but can't read the documentation or watch videos about what to do because he doesn't pay for an account... it is a little annoying for legitimate customers but causes further frustration.
You will never stop cracking. The only way is to convert the application to SaaS. Otherwise just try to minimize casual pirating and leave it at that.
Most people who pirate it arent your target paying users anyway, because obviously they are broke, and most of it are even teens just trying softwares left and right.
It's a nice nudge to improve your licensing verification process also.
Happy to talk with you via DM if you’re interested.
Payment should be for other benefits such as low friction, support, and community membership.
Technical people will always pirate software, use it to your benefit.