与在原始应用程序包中提交给Apple的原始可执行文件相比,当应用程序通过App Store购买并安装在用户的iPhone上时,应用程序的可执行文件是否逐字节相同?或者它是否不同(例如,使用其他签名或加密)?
我只关心可执行文件,而不是整个应用程序包.
特别是代码如......
int main(int argc, char* argv[]) {
FILE* file = fopen(argv[0], "rb");
// Read entire contents of executable file; calculate a hash value
// ...
fclose(file);
}
Run Code Online (Sandbox Code Playgroud)
...计算与原始提交的可执行文件上的iPhone外部哈希计算相同的哈希值?
例如,如上所述计算SHA256哈希然后使用XCode中的"构建并运行"在附加的iPhone上运行产生与通过openssl sha256 MyAppExecutableFile从OS X中的终端运行来计算SHA256哈希完全相同的结果.这意味着安装app通过XCode不会改变可执行文件.
我的问题是,当应用程序提交到App Store,购买和安装时,这是否仍然存在.
Jul*_*rgé 17
应用程序可执行文件在Apple App上发布时由Apple加密,因此自行运行自己的二进制文件的校验和不是一个好主意 - 您无法提前知道加密二进制文件的文件大小.
请注意,二进制文件始终在文件系统中保持加密状态,只有iPhone root用户才能解密这些二进制文件.如果您使用iTunes从App Store下载应用程序,则可以在PC或Mac上打开IPA,并通过运行otool查看二进制文件确实已加密:
otool -l <app binary> | grep cryptid
crypt id 1
(a value of cryptid 1 means the app is encripted)
otool -l <app binary> | grep cryptsize
12345678
(size of the encrypted segment)
Run Code Online (Sandbox Code Playgroud)