【问题标题】:Is it possible for an app to be decompiled?是否可以反编译应用程序?
【发布时间】:2012-04-12 11:38:24
【问题描述】:

我需要将我网站特定部分的身份验证信息编码到我的应用程序中。应用程序是否有可能被“反编译”并暴露用户名和密码?

NSURL *url = [NSURL URLWithString:@"https://predefinedUsername:predefinedPassword@www.website.com"];

【问题讨论】:

标签: iphone objective-c ios ipad


【解决方案1】:

是的,这是可能的。假设如果你有任何东西被编译到你的应用程序中,它可以[并且将会]被某个地方的某个人发现。即使今天不可能,您也在创建此类信息的冻结记录,这些信息将容易受到未来任何已知或未知的攻击。

您确实需要用户执行一些对他们进行身份验证的任务。有一百万零一种方法可以做到这一点,而对于其中的每一种,都有一百万零两种方法来做错。 :)

在不了解您的具体要求的情况下,除了“保持简单,不要以明文形式存储或发送任何内容”之外,就不可能真正说更多。

【讨论】:

  • 非常感谢您的帮助。你知道更流行的应用程序,尤其是杂志是如何做到的吗?内容是从安全网站下载的,用户名和密码不是每次都一样吗?为什么人们不能免费反编译应用程序和下载问题?还是我看错了?谢谢。
  • @JackHumphries 可用选项因平台而异。如果不是让应用程序的所有实例共享一个单一的硬编码帐户,而是拥有一个每次购买令牌,在每次付费购买的后端创建一个新帐户(如果滥用/共享/退款可以撤销),那将是一个开始。不过,我对 Android Market 知之甚少,对 Apple 的 App Store 基础设施一无所知,所以我无法给你任何更具体的提示。
【解决方案2】:

正如@Hyperbole 所说,如果您以纯文本形式存储用户名和密码,它将在可执行文件中可见。检查可执行文件中的字符串非常简单,而且通常是有恶意的人会尝试的第一件事。

右键单击您在 iTunes 中下载的任何应用程序,然后选择在 finder 中显示。在您的桌面上复制应用程序并将应用程序从 AppName.ipa 重命名为 AppName.zip。双击解压,然后查看文件夹内部。导航到 Payload 文件夹,然后右键单击其中名为 AppName 的(可能只有)文件,该文件看起来像一个应用程序,但有一个带有十字的大圆圈作为图标。选择显示包内容。滚动直到找到一个名为 AppName 且没有扩展名的文件和一个带有绿色单词“exec”作为图标的黑色矩形。在文本编辑器或其他文本编辑器中打开该文件。您会发现其中大部分最终都是随机符号和其他废话,但您偶尔应该会看到一些纯文本。在大多数情况下,编译器会采用字符串常量并将它们直接嵌入到应用程序中。

您询问杂志应用程序和其他应用程序如何访问内容 - 有很多不同的方法可以做到这一点,但我想不到,在服务器验证您的应用内购买收据后,服务器会记录一个特定于您的 iTunes 帐户的标识符,表示您购买了该杂志的特定版本。然后您的应用程序可以从服务器请求该文件,并在此过程中将标识符添加到请求中。服务器会在查看数据库并确定您已购买内容后以文件响应。

其他解决方案包括签名/散列唯一密钥。

【讨论】:

    【解决方案3】:

    您的示例将公开用户名和密码,而无需反编译,因为您通过 URL 请求中的纯文本发送它。任何拥有嗅探器或 MITM 服务的人都可以将其从空中抢走。更好的方法是通过 http*s* 协议使用 SSL。您可以更进一步,在运行时提示输入凭据和/或在应用程序中存储加密版本。

    【讨论】:

    • 谢谢。所有信息都将通过 SSL 发送。当您说在应用程序中存储加密版本的凭据时,您能否进一步解释您的意思?当需要将它们发送到服务器时,我将如何解密它们?非常感谢。
    【解决方案4】:

    这非常糟糕,因为只需对应用程序二进制文件运行“字符串”即可轻松恢复这些凭据,而无需对其进行反编译。

    您不能在用户首次启动应用程序时弹出一个对话框要求用户输入凭据吗?或者,您可以将它们加密存储在文件中,然后要求用户提供替代凭证,例如派生密钥的密码,但即使这样也无法在确定的攻击中幸存下来,除非密码很长。

    【讨论】:

      猜你喜欢
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多