开发者

How to programmatically determine if DRM was removed from iPhone application?

How can I determine if DRM was开发者_如何学运维 removed from iPhone application bundle (to protect it from piracy)?


I have an iPhone app which integrates with a third party web service. I use the technique described in this question to find pirates and then have the app "phone home" with the user's device ID and user ID for the web service (I haven't done anything with this information yet, but I was thinking about contacting them and asking them nicely to purchase my app).

In addition, once a user has used my app for a certain amount of usage, I limit functionality and direct the pirates to the App Store for full functionality.


To my knowledge, there's only one way to remove DRM: Crackulous.

So to find out what to look for in a cracked application, I would run Crackulous on your app and compare the app bundles. It should be fairly easy to determine what's been changed by looking at filesizes and running a diff on the files in the bundle.

Once you know what the changes are and to what file(s), just look for those changes in your application to determine if the application has been cracked.

If you find out exactly which files should be checked, please post your findings here so others can benefit from your research.


My previous Stack Overflow question may help you out: Reducing piracy of iPhone applications


Its probably worth pointing out that there are no casual "pirates". Casual users cannot download your app from the app store without buying it. All the DRM-removal schemes require to be run on a legitimately purchased copy.

As to looking at the bundle for changes, as I recall all you need to do is step through the link-loader commands and ensure that the code bundle is still tagged as encrypted. No need to compare it with anything. You'll need to read about Mach-O file format to do this, but thats not difficult, its all documented on developer.apple.com

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜