作为主要目标,我想加密有关已使用的头文件和库的信息
在大多数情况下,我的应用程序是用C ++编写的,只使用iOS SDK中的标准I / O方法
答案 0 :(得分:4)
应用程序商店已经将应用程序的可执行文件(或大部分文件)加密,然后再发送给用户的设备。 iOS内核在启动应用程序时会在内存中解密文件的加密部分。
由于Objective-C在加载动态库(如UIKit和Foundation)时按名称查找类,并在运行时按名称查找方法选择器,因此这些类和选择器字符串必须出现在可执行文件中,但它们是加密的文件的一部分。
在内核解密后,Jailbreakers已经可以通过检查应用程序的内存来打败iOS加密系统。
花费更多时间试图隐藏这些字符串几乎肯定是浪费时间。
如果您的目标市场位于越狱常见的世界的一部分,您可能希望寻找使用服务器后端的应用程序构想,并使用应用内购买将服务器访问作为消耗品出售。您的服务器可以verify that users have paid for server access,并且您可以禁止试图窃取访问权限的帐户。
答案 1 :(得分:2)
混淆本质上是有缺陷的 - 根据定义 - 它必须始终带有用于将应用程序恢复到其原始形式的代码。
技术娴熟的攻击者(如果有人试图进行逆向工程,你将会处理这个问题)将不会受到任何混淆方案的阻碍。