【问题标题】:How to obtain codesigned application certificate info for ios app如何获取 ios 应用程序的代码签名应用程序证书信息
【发布时间】:2012-10-31 10:09:07
【问题描述】:

我们有一个适用于 ios 的应用程序 最后 - 我们进行了代码设计,但我想添加一个额外的安全检查 - 在可执行文件本身内。

我知道苹果已经签署了应用程序。如何在我的应用程序中获取苹果签署的信息?比如苹果公钥之类的?

【问题讨论】:

  • 我假设这是为了盗版检测?还是您的 iOS 应用程序需要满足严格的安全要求?您应该知道 iOS 是一个非常动态的平台,如果您自己的代码在内核级别运行并监控系统调用并进行检测,那么您几乎无法确保如此高级别的安全性。

标签: ios certificate ipa


【解决方案1】:

您不应该尝试对 Apple 的 Fairplay DRM 做出假设,假设您打算对其进行验证,如果没有 Apple 的密钥,您将无法做到这一点,但我假设您还有其他篡改/盗版指标正在寻找。

有多种方法可以检查您的应用是否被篡改。假设 Apple 的 Fairplay DRM 是安全的,那么如果您检测到您的应用程序未加密运行,那么它很可能被篡改,更有可能是盗版。您可以检查LC_ENCRYPTION_INFO 段中的cryptid 位(更多关于此here)。但是请记住,现在盗版工具要复杂得多,许多会在运行时修补cryptid 值。您可能会使用dyld_* API 来检查加载的库,如果加载了cryptid 黑客,您的应用程序可能会受到威胁。他们当然可以更改库的名称,而您又回到了原点。他们总是可以在应用程序运行时更改磁盘上cryptid 位的值,并在应用程序终止时将其切换回来。

因此,尽管您可以探索多种途径,但实际上您无能为力。苹果曾试图通过技术和法律措施防止越狱,但都失败了。而且只要能越狱,就可以通过这些方式篡改二进制文件。

【讨论】:

  • 是的,我想检查一下我的应用程序是否被证书信息篡改。当我的应用程序午餐时,我可以检查证书信息并向用户显示提醒;
  • 通过证书我认为你的意思是确保它的签名和加密,在这种情况下,密码检查将起作用。但正如我所说,即使这样也不能保证没有其他代码在您的进程中运行,因为通过DYLD_INSERT_LIBRARIES 进行动态代码插入之类的事情。除非您想与海盗玩猫捉老鼠的游戏,否则这可能是最好不要管的事情之一。
  • 据我所知,我的代码在提交到苹果商店之前已经用我的私钥签名,苹果在用户下载时使用用户信息加密了应用程序。我只是想保护从其他应用程序下载的应用程序商店。
  • 在安卓应用中,我可以在应用签名后获取我的公钥。在 mac os 中,也可以通过 codesign -dvvv **app 等代码或命令获取证书信息
猜你喜欢
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 2014-03-19
  • 2017-11-17
  • 1970-01-01
相关资源
最近更新 更多