如何隐藏/加密/混淆我的 Android 应用程序中使用的直接 URL? [复制]

Posted

技术标签:

【中文标题】如何隐藏/加密/混淆我的 Android 应用程序中使用的直接 URL? [复制]【英文标题】:How to hide/encrypt/confuse direct URLs used in my Android application? [duplicate] 【发布时间】:2012-07-18 20:36:21 【问题描述】:

问题是 - 我开发了一个 android 应用程序,该应用程序将根据不同的用户输入 HTTP 访问我的 Web 服务器。我的问题是 - 无论如何要在我的应用程序中隐藏硬编码的 URL,如果有人对这个代码进行逆向工程会混淆吗?

问题是 - 如果有人对他/她可以作为 URL 向我的其他客户提出问题的代码进行逆向工程,则参数是硬编码的。

这对我来说真的很紧急。寻求有关此主题的帮助。

谢谢。

【问题讨论】:

除了proguard 遮蔽之外的东西?如果您需要比这更安全的东西,我认为您唯一真正的选择是创建某种巧妙的算法,该算法将在获得正确输入而不是硬编码字符串后将您的 URL 返回给您。 谢谢蒂姆,你有什么聪明的算法的想法吗? 不,不是。最简单的实现(但可能最不安全)是加密硬编码的 URL 字符串并在需要使用它们时解密它们。但是,您的加密密钥将被硬编码,任何进行逆向工程的人都将拥有找到 URL 所需的东西,它只需要额外的步骤。最安全的选择是自己想出一些有创意的东西,而不是重复使用别人的工作并将其与传统加密结合使用。 整个想法是“鸡与蛋”。你是人类(我假设),因此你想出的任何其他人都将能够撤销给定的时间和决心。 【参考方案1】:

在您的应用程序中完全混淆字符串资源(例如 URL)是 simply not possible. 任何人都可以反编译您的应用程序,并且只要有足够的时间将能够重建您应用程序中的任何硬编码字符串 (URLS)。

与其依赖 URL 的匿名性,不如将时间花在保护服务器上,以免未经授权的客户端难以与之交互。即使你有完美的字符串混淆保护你的服务器仍然是至关重要的。有多种方法可以发现隐藏的 url。例如,我设计一个man in the middle attack 来查看我的手机连接到哪些服务器是微不足道的。一个简单的网络爬虫也可以做到这一点。

【讨论】:

以上是关于如何隐藏/加密/混淆我的 Android 应用程序中使用的直接 URL? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

DexGuard 如何加密类?

Android apk如何加固防止被破解(防止逆向编译)

我应该混淆 Android 应用程序存储的 OAuth 消费者秘密吗?

如何在 Eclipse 中混淆我的代码? (安卓)

android防反编译技术初体验——混淆

使用Dotfuscator加密混淆程序以及如何脱壳反编译