使应用程序反编译保存

时间:2014-05-31 12:42:17

标签: ios xcode compilation decompiling

我只使用自己的DRM制作iOs应用程序(该应用程序适用于Cydia)。我想知道如何从反编译中保护我的应用程序。我反编译我的应用程序,只是为了检查“感兴趣的”用户可以看到什么。我能够看到每个字符串,敏感的字符串。然后我反编译了FindMyiPhone,我发现每个字符串都替换为"some string from a protected section"有没有人知道保护字符串?

1 个答案:

答案 0 :(得分:1)

首先要做的事情;如果有人真的想破解应用程序,他/她会找到一种方法来做到这一点。此外,Cydia和Jailbreak还无法帮助您保护您的应用。

您应该单独加密字符串并在代码中使用此加密字符串。当然,字符串应该在使用之前在运行时解密。这很容易破解,这些是你可以做的事情,使其更难;

  • 设置"部署后处理"和#34;剥离链接产品"从项目构建设置标记为。这将剥离symbol table并使得获取关键变量和方法名称(以及它们的地址)变得更加困难。
  • 除了第一步,您还可以使用预处理程序指令(尤其是#define)来使编译后的代码更加笨拙。例如;

    #define importantString temp
    @property (nonatomic, strong) NSString * importantString;
    
  • 隐藏字符串的内容更棘手。您应该加密字符串,仅使用代码中的加密字符串,并在需要时在运行时解密它。这样,当应用程序被反编译时,您的字符串将被隐藏,并且任何攻击者都必须解决您的加密方法。您可以直接使用AES或查找有关如何在herehere中对字符串进行模糊处理的一些想法。我建议编写自己的加密/解密函数,并使用NS_INLINE作为解密函数,以便在反编译时使代码更复杂。
  • 但还有另一个问题;字符串在代码中加密,但在某些时候它将在运行时解密,即使您在使用它之后擦除解密后的字符串也是如此。有人可以轻松调试代码并挂钩解密的字符串。幸运的是,有一些方法可以防止调试,这些方法在here
  • 中有描述

尽管如此,这些都是众所周知的方法,只会保护代码免受好奇的注意。有关详细信息,您可以查看此tutorial或阅读Apple documentation或此book