【发布时间】:2013-07-28 23:07:38
【问题描述】:
我最近阅读了有关反编译 iOS 应用程序的信息,我现在非常担心它。如以下帖子(#1 和 #2)所述,可以反编译分发到 App Store 的 iOS。这可以通过越狱来完成,我认为将应用程序从内存复制到硬盘。使用一些工具可以
- 读出字符串(字符串工具)
- 转储头文件
- 对汇编代码进行逆向工程
似乎不可能对 Cocoa 代码进行逆向工程。
由于安全性是我创建的软件的一项功能,我想防止不良用户重建我的安全功能(使用密钥加密或登录网站)。所以我想出了以下问题:
- 有人可以用程序集重建我的保存和加密或登录方法吗?我的意思是他能理解到底发生了什么(什么保存到哪个路径,使用哪个密钥等,使用什么凭据登录到哪个网站)?我没有组装的理解,它看起来像我的矩阵......
- 我怎样才能安全地使用
NSStrings,它不能用字符串读出或在汇编中读取?我知道可以对字符串进行混淆 - 但这仍然不安全,不是吗?
【问题讨论】:
-
无需越狱即可进行逆向工程,是的,您可以在代码中编写的任何方法都可以被有足够时间的人理解。使用 SDK 提供的方法,因为它们的源代码不会直接在您的应用程序中,但不要梦想太多,这不是 100% 安全的方式,所有可以读取的内容都可以复制,所有可以复制的内容复制的可以破解。
-
所以当我使用 SDK 类方法(例如
[NSString stringWithFormat:...]或用于保存文件时,这不会直接在程序集中可见?我的意思是任何应用程序都包含基础框架... -
当你使用 [NSString stringWithFormat:...] 时,可见的是对 stringWithFormat 的调用,不可见的是该方法背后的内容 => 我们知道调用的是什么,而不是如何调用在它后面完成
-
好的。但我认为能够进行逆向工程的人也知道 SDK 方法背后的内容(或者他可以使用文档找到)。几乎不可能进行 SDK 方法调用,只有开发人员知道它的结果?
标签: ios objective-c security assembly decompiling