How not to write shareware


I’m stunned.

What happens when the app crashes and the user clears their preferences?

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Now, I’m not encouraging willful interference and hacking of applications, but come on! There has got to be a better way than simply storing everything in plain view of everyone. I don’t want my license or serial number visible to other people who use the same computer. Another hiccup is that in demo modes, AppZapper and Disco store the number of remaining zaps or burns in the plist file. That’s fine up to a point, but at least check if the user (as in the screenshots above) has manipulated it. After so many years of Mac Shareware, something’s got to be done. Hack proof your apps. Please. You’ll get more business and not be exploited.

I have kept this short, since I don’t want to simply tell everyone how to exploit applications, but my general plea is, please, test and retest your apps to make sure they’re not hackable. If the biggest names in shareware are making these mistakes, it’s time run another audit on your work.

Update: Follow up article on shareware licensing techniques using Cocoa.


Back to Top ↑

13 Comments so far

Leave a comment
  1. 1

    I think it’s up to the developer how hard they want to work to enforce these things.

    I don’t want my license or serial number visible to other people who use the same computer

    If you don’t trust people who have physical access to your machines (and accounts!), serial numbers are probably not your biggest problems. :)

  2. 2

    I think the prevailing wisdom in Mac shareware these days is that:

    a) All registration schemes are circumventable. How much of your time (and thus money) do you want to spend on it?

    b) Someone who really wants your software for free, and has decent technical skills, is going to get it.

    c) The more complex the system, the more likely it is to fail and piss off real customers.

    Having said all that, storing registration information in the user defaults is a little too lazy IMHO; when an app behaves badly, one of the first things normal users are going to do is to blow away the preferences.

  3. 3

    All registration schemes are circumventable.

    Absolutely. If someone is determined to hack an app, there is nothing to stop them forever. However, there has been a study revealing that 1 in 5 people will hack a shareware app if it’s simple enough. That’s a whopping 20%. Most of these will buy the app if they find that they can’t disable the security on it in at least 10 minutes. Surely it’s in the interests of the developer to at least make an effort! Snapz Pro X has been innovating in this regard.

    Again, there are people who will simply gaze longingly at the shareware apps installed and fight the temptation to hack them since they don’t have any money. But that’s another story. ;)

  4. 4

    I would like to hear your suggestions as to how to go about storing persistent license and other user data on a machine in such a way that it can’t easily be found, read and modified…

  5. 5

    Man, I heard this Cocoa stuff is easy. One line can do anything. Let’s see:


    [[NSUserDefaults standardUserDefaults] setObject:launchesRemaining forKey:@"LaunchesRemaining"];

    I wonder where that goes? ;-)

  6. 6

    Yeah, I’d also like your suggestions!

  7. 7

    Ok, MacHeist and exams are keeping me busy, but expect another post on this soon.

  8. 8

    Are we supposed to be able to view a larger version of these screenshots? It’s hard to be stunned by 3px text.

  9. 9

    It’s hard to be stunned by 3px text.

    Good point. Click on the images to view larger versions.

  10. 10

    Can I ask you to please remove these images, or at least abstract the application names away from them?

    These images really do serve no purpose other than to make life just a little bit harder for developers, and a little bit easier for would-be hackers. (Please note that I’m not talking about censoring the discussion of copy protection here, rather obscuring the details of particular applications and companies.)

    As developers, most of us are only too well aware of the problems involved in securing our customer’s data. The trick is to do it in such a way that works without unduly burdening the customer AND without having to spend months of programmer time on the problem.

    Again, since you were “stunned”, I think it only fair that you provide a solution, or at least an attempt at one. You have pointed out the problem (which is a known one), but not yet an answer to it.

    regards.

  11. 11

    Can I ask you to please remove these images, or at least abstract the application names away from them?

    Done. Thanks for telling me off, actually, I’ll be more careful in future.

    provide a solution, or at least an attempt at one.

    Coming soon ;)

  12. 12

    Thank you.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Comments may be edited for formatting.