[转载]保护iPhone App不被破解的办法
转自:http://www.cocoachina.com/iphonedev/sdk/2010/0322/763.html
虽然iPhone的程序破解一直存在,但是出于市场,支付方式等众所周知的原因,针对部分国家或地区市场的程序或游戏销售量和破解比始终是一个比较 夸张的数字。虽然我太不在意我制作应用的盗版被使用问题(因为大家愿意去用,说明你的应用或游戏受到了肯定)。但是出于如需和服务器频繁交互,需提供给正 版用户的权益得到保护以及迫切需要金钱缓解财务状况等原因。我们不得不做出对iPhone破解的节制行为。
这里简单谈谈一种方式,望能达到抛砖引玉的目的。
iPhone应用的发布是通过iTunes,用户下载之后会对程序产生一个对应你iTunes帐号的签名。而破解,正是需要去掉这个签名,让它可以安装在 每一个帐号上。但是安装过程还是需要欺骗iTunes,告诉它这个程序是已经签名了的。这个破解的签名在哪里呢?对了,就是每个应用或游戏下的Info.plist文件,如果你下载过破解的 iPhone应用来研究。就会发现所有的破解程序都有这个一个键值:
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>
那么保护破解最简单的入手点就是针对这个地方了。
打开xcode,在你需要检测破解的地方添加以下代码:
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
if ([info objectForKey: @"SignerIdentity"] != nil)
{
//你的代码
}
以上代码读取info.plist,如果发现了SignerIdentity的键,就执行你的代码。
破解永远止不住,也不能完全被禁止,在更多时候我希望程序员能大度一些,让用户可以尽量无限制的使用你们的作品。也呼吁所有用户能够在使用之后,如 果真的喜欢,去购买一份正版。因为没有资金收入,再好的公司,也会破产。长远来看,只会限制了整个产业的发展。如是杀鸡取卵的做法,也只会让所有人都得不 偿失