Basically a cracked IPA has the following:
- A modified Info.plist, usually converted to text from binary
- A decrypted image of your application binary
If you search around the various iPhone discussion blogs and forums you'll find threads about people asking how to prevent IPA cracks. Invariably someone will chime in saying, "You can... but not without using undocumented SDK API!"
This is hogwash.
Using an undocumented API usually leads the poster, or immediate repliers to chime in with, "... and using undocumented SDK API means a form rejection letter from Apple!"
This too is hogwash.
There are plenty of applications on the App Store that use undocumented API. Ever notice UISegmentedControls that don't toggle on tap? What about silent UIPickerViews?
The thread usually peters out with people saying,
- "You should be proud 15 year olds think your stuff is good enough to steal!"
- "Why do you care.. your app is $0.99 anyway!"
- "Piracy is a victimless crime!"
- "They'll just crack your software again so why bother!"
- "Piracy is a socio-political issue and is much larger than one developer's $0.99!"
- "Those kids wouldn't have bought it anyway... they're broke!"
However in my opinion the points above are all complete hogwash.
Re-Value Your Time
Okay, so you spent a bunch of your spare time coding your application. You neglected your wife, your kids, your friends and your pets.
You gave Apple your $99 yearly developer fee. You managed to get XCode to build a distribution release of your application AND it got signed properly.
You successfully uploaded it to the App Store for $0.99 per download and now you're collecting your monthly stipend.
You Google around for your app just to see what kind of juice you have with the bourgeois. Maybe your cyber ego needs some stroking -- who knows? After clicking through three pages of search results, you find someone has posted your cracked IPA on RapidShare.
Some 15 year old kid with really nasty zits has marginalized the time you've spent writing this application.
I bet you're pissed. But now what?
Stay tuned for my next installment.