可能重复:
保护可执行文件免受逆向工程?
作为主要目标,我想加密有关使用的头文件和库的信息
大多数情况下,我的应用程序是用 C++ 编写的,仅使用 iOS SDK 中的标准 I/O 方法
应用商店在将应用程序的可执行文件(或大部分)发送到用户设备之前,已经对其进行了加密。iOS 内核在启动您的应用程序时会在内存中解密文件的加密部分。
由于 Objective-C 在加载动态库(如 UIKit 和 Foundation)时按名称查找类,并在运行时按名称查找方法选择器,因此这些类和选择器字符串必须出现在您的可执行文件中,但它们位于加密的部分文件。
越狱者已经可以通过在内核解密后检查应用程序的内存来破解 iOS 加密系统。
花更多时间试图隐藏这些字符串几乎肯定是浪费时间。
如果您的目标市场位于世界上越狱很普遍的地区,您可能希望寻找使用服务器后端的应用程序创意,并使用应用内购买将服务器访问权限作为消耗品出售。您的服务器可以验证用户是否已为服务器访问付费,并且您可以禁止试图窃取访问权限的帐户。
混淆本质上是有缺陷的——根据定义——它必须始终与用于将应用程序恢复到其原始形式的代码一起提供。
技术娴熟的攻击者(如果有人试图进行逆向工程,您将面临这种情况)不会受到任何混淆方案的太大阻碍。