【问题标题】:iOS Code Protection - C Static Library or Objective-C Framework?iOS 代码保护 - C 静态库或 Objective-C 框架?
【发布时间】:2019-08-21 21:58:12
【问题描述】:

我有一些计算算法需要发送给我的客户进行测试。我被要求阻止我的客户对算法进行逆向工程。我认为我有两个选择:

  1. 将计算封装在 Objective-C 框架中,其中我 可以定期向我的服务器发出一些 HTTPS 请求, 只有在服务器允许的情况下,框架才会进行计算。
  2. 将计算封装在 C 程序中并编译成 .a 静态文件 图书馆。这是一个普通的 C 库,所以我认为会非常困难 发出 HTTPS 请求。但我也读到 C 静态库更多 相对于动态框架很难破解。

我知道没有 100% 的安全性,我只是想知道在安全性方面哪个选项更好?并且还请建议是否有任何其他方法来保护框架/静态库?

【问题讨论】:

  • 您希望在客户端计算机上执行计算,但您不希望有权访问客户端计算机的人能够对计算进行逆向工程?有一些理论上的方法可以对加密数据执行操作,因此执行操作的人无法切实地辨别未加密的数据,但它们可能超出了您真正想要做的事情。这里的真实情况是什么?如果客户端要将计算结果发送回服务器,则您不能信任它们。
  • 一般来说,在客户端计算机上执行的任何计算都应该被视为暴露给世界,在大多数情况下试图隐藏它们并不是一个可行的目标。您描述的方法会对攻击者造成滋扰,但对有经验的攻击者来说只是轻微的滋扰,不能被认为是安全的。

标签: ios c objective-c frameworks static-libraries


【解决方案1】:

据我了解,在这种情况下交付给您的客户只是算法的结果(而不是算法的实际实现)。实现它的一种方法是在服务器上实现算法(使用 C、Node.js、Python 等),然后通过 HTTP/s API 公开它。然后从您的 iOS 应用程序/框架/静态库中,您通过 HTTP 请求将所需的参数作为输入传递,在您的服务器上执行计算并返回结果。

【讨论】:

  • 是的,我同意构建服务器可以提供最好的保护。但是,这是不可行的,因为必须实时执行计算
  • 在这种情况下,您可以使用选项 1,但在 C 中实现算法(安全部分)并在 Objective C 中实现 HTTP 调用。然后只需从 Obj C 调用您的 C 方法。这篇文章将帮助您:stackoverflow.com/questions/6131372/calling-c-from-objective-c
猜你喜欢
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多