0

我正在使用 CommonCrypto 库为 iPhone 应用程序加密数据。数据是应用程序本地的。加密密钥使用 NSString 硬编码在代码中。

我想知道是否有办法从应用程序可执行文件中访问这个 NSString 的值。我知道代码将是可执行形式,但最后一个 NSString 必须将该值以纯文本形式存储在应用程序的某处。例如,使用 iExplorer 访问应用程序文件夹将提供对可执行文件的完全访问权限。

4

1 回答 1

0

假设应用程序是从应用商店下载到设备上的......

  1. 解密二进制文件。这需要一个越狱设备,但这很简单(有很多很多工具可以做到这一点,以及 intarwebs 上的教程)
  2. 将解密的二进制文件移动到桌面
  3. 运行任何你想要的工具。strings等都会起作用。IDA ProHopper将反汇编二进制文件,不仅显示二进制文件中的 C 字符串,还显示访问它的代码。
  4. 此时,您拥有该应用程序的所有用户所依赖的加密密钥。
  5. ...
  6. 利润!

从二进制文件中提取 C 字符串是任何攻击者首先要做的事情之一。不建议将敏感信息存储在二进制文件中,例如加密密钥。不幸的是,没有很多安全的方法可以为客户端获取加密密钥。评估不同方法的风险,并确定您可以接受的暴露水平。

于 2014-08-14T23:16:06.883 回答