I wanted to know if there is a standard way of making licenses on Mac OS 10.6. For exemple, if I am creating an application and I want to create a licensing system, do I leave a file somewhere in the system that my application can read/write?
Mac OS X Applications, tend to be limited due to the UNIX “open” nature of the operating system. Contrary to Windows for example, where one could bury an entry into the Registry under any name, provided you’re given Admin privileges (which is very natural in Windows).
Under OS X, applications are forced to use dedicated locations for storing settings and preferences. ~/Library and /Library.
With that being said, this doesn’t stop some applications to use other mechanisms in conjunction with that.
I cannot name them all primary because I don’t know all of the existing ways, but I can tell you some common forms:
Serial Number / License Key: These are the typical. The program stores an “encrypted” copy of these values in its preferences (sometimes even unencrypted), usually located in:
- ~/Library/Preferences or /Library
- The Application Bundle itself
- Some value in the user’s Home folder (possibly hidden by a .)
The problem with these are obvious, the serials get published/shared/copied and you have no way to stop it. Some applications have a “blacklist” of serials that although perfectly formatted, are internally hardcoded to be bad.
Online Activation: Less common (and usually more annoying), these require the app to connect to an online host to “activate” or “validate” the license. This prevents a lot of fraud and usually ends with the application cracked by some genius, where the code that does the validation is simply modified to always return “ok” making the application believe that the internet stuff went ok. Read: Adobe Products.
In any case, the program has to store the value somewhere, and the usual locations apply.
Tied with Hardware ID This is common too, they extract your drive’s serial number and some other parameters (Network card MAC Address for example) and they create a serial number that checks for those. So even if you “copy” the license, the new machine won’t have the same values and it will fail. This is annoying because if your hard drive crashes and you boot from a backup, you’ll have to re-register.
I assume you want to continue reading about this, so instead of believing me, follow these links:
- How should my Cocoa application store the user’s license key?
- What is the best way to protect a Cocoa shareware application from software piracy?
- Using OpenSSL for keys (good read!)
- AquaticPrime: the famous secure registration framework (free, accepts donations)
- Golden % Braeburn: The not free method used by the famous Delicious Library (among others).
DRM is handled by apple automatically if you use the appledev store submittal. The DRM apple uses is extremely kept information, obviously the record labels and video studios demand this, as apple would love to not deal with it, per Steves frequent emails and other public letters.
I need more info regarding what you want to DRM, type of content, iOS app, or perhaps you need a simple license /registration procedure, for an OSX.app. Please be verbose