我知道应用程序包是由Apple签名的,因此无法修改,我想知道的是,如果iOS实际上读取了整个包并重新计算了包的签名或者他们使用了一些技巧。对于较大的应用程序,400MB +似乎散列整个捆绑将花费大量时间。是否有加速验证的技巧?
奖励积分:iOS在哪里存储签名?在钥匙串?
答案 0 :(得分:2)
代码签名是应用程序包内的文件,例如Whatever.app/_CodeSignature/CodeResources。它不需要整个bundle的哈希 - 只是里面的一些东西,比如二进制文件和Info.plist。这就是为什么你可以在代码签名的应用程序中交换资源的原因 - 就像OS X系统安装的应用程序之一一样,几乎所有的应用程序都是Lion的代码签名 - 而不会导致系统拒绝运行它。