首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iPhone/iPad应用程序代码混淆-有可能吗?值得吗?

iPhone/iPad应用程序代码混淆-有可能吗?值得吗?
EN

Stack Overflow用户
提问于 2011-04-06 02:45:05
回答 5查看 43.9K关注 0票数 71

我研究了相当多,无论是在SO上,还是在各地的google-ing上,但我似乎找不到一个关于用Objective-C编写的iPhone/iPad应用程序的代码混淆的直接答案。

我的问题是:

  1. 有办法做到这一点吗?如果是,怎么做?
  2. 值得吗?
  3. 当应用程序提交给他们时,苹果允许这样做,或者有问题吗?
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-06 03:17:12

对于Objective-C,似乎没有代码混淆器。但让我们暂时假设它确实存在。

苹果可能不会拒绝一个模糊的应用程序,只要它不崩溃。主要的问题是:混淆的意义是什么?通常,你想要混淆代码来保护你的知识,例如,如果你的程序使用复制保护,你想让潜在的黑客更难破解,或者如果你使用一些高级算法,你不希望业务竞争对手能够反编译它。

版权保护已经在iOS上得到了保护。虽然通过越狱可以复制和运行一个普通的应用程序,但我要说的是,这样做的实际用户数量相当少(至少比PC和Mac等“常规”电脑上的用户要少得多)。你认为盗版是一个需要混淆的大问题吗?

如果你确实有重要的知识需要保护,那么模糊处理可能是值得的。混淆有它的缺点:你不能再调试你的模糊应用了。崩溃报告将是无用的。

您可能还想阅读Obfuscating Cocoa这篇文章。

回到似乎没有混淆的事实:你可以做的是这个技巧:假设你有一个像这样的头:

@interface MyClass : NSObject {
}

- (void)myMethod;

你可以像这样做一个简单的混淆:

#ifndef DEBUG
#define MyClass aqwe
#define myMethod oikl
#endif

@interface MyClass : NSObject {
}

- (void)myMethod;

通过这种方式,您仍然可以在源代码中使用有意义的符号,但编译器会在不进行编译以进行调试时将其变成“垃圾”。

票数 62
EN

Stack Overflow用户

发布于 2012-02-17 14:51:50

  1. 是的,您可以查看EnsureIT for Apple iOSContaxiom Code Protection
  2. It depends。安全性通常会带来复杂性,你必须在这两者之间取得平衡,usability.
  3. Apple应该没有任何问题(如果我错了,请纠正我),而且我个人有几个应用程序使用代码混淆程序。
票数 34
EN

Stack Overflow用户

发布于 2013-10-09 16:44:29

除了前面的答案,现在有几个第三方工具提供了一定程度的混淆和完整性保护,包括:

  1. Arxan,
  2. Metaforic,
  3. Cryptanium

它们的功能各不相同,包括:

  1. 控制流混淆例如,ARM指令流被冗余指令弄乱以试图隐藏代码的原始目的,
  2. 类和方法重命名-将你的方法和类重命名为无意义的名称尽管你必须小心使用它,因为你很容易破坏你的应用程序,因为Objective-C运行时希望找到特定的名称,
  3. 字符串加密-应用程序中的所有静态字符串都被加密,并在使用前插入代码解密字符串,以便进行静态分析harder
  4. Anti-debug插入代码以中断通常的调试器(并不总是成功)。
  5. 防篡改-通常构建一个校验和网络,以保护二进制代码不被修改,
  6. Objective-C运行时保护-通常检查obj-c注册的方法实现,以确保它们在应用程序中并且没有被“搅乱”。

所有这些工具都非常昂贵,并不是没有问题,所以你真的需要一个需要高度完整性的应用程序才能考虑它们,例如银行或DRM非常重要的地方。

对于这些类型的应用程序,您还需要熟练的渗透测试人员来确保您的应用程序不会以其他方式暴露,因为这些工具通常与使用它们的人一样好,而且还有其他操作系统漏洞需要缓解,这些工具无法解决这些漏洞。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5556849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档