proguard 对逆向工程的安全性如何?

Posted

技术标签:

【中文标题】proguard 对逆向工程的安全性如何?【英文标题】:How secure is proguard against reverse engineering? 【发布时间】:2013-07-13 13:15:25 【问题描述】:

我将在应用中处理非常敏感的数据。根据我的定义,混淆不会增加安全性,它只会在有限的时间内延迟破解者。 Proguard 有没有可能做得这么好,可以称为增加安全性?

最敏感的是一些网络调用。很难嗅探密码,因为我们将在双方生成密码并使用时间戳检查其有效性。问题是应用程序可能被逆向工程并且生成算法可能被利用。

不可能将算法保存在本地文件中,因为破解者可以使用已root的手机检索它。从服务器下载算法是行不通的,因为这里也存在同样的问题,如果破解者对应用程序进行逆向工程,他/她将能够看到算法的来源。

非常感谢任何有关如何进行的输入!

编辑

我要保护的是生成算法,因此破解者可能不会向我们的服务器发送大量数据。

【问题讨论】:

防范什么?您要防止哪些具体的攻击? @SLaks 请看我的编辑。 您已在第一行回答了您的问题:“根据我的定义,混淆未增加安全性”请标记为已解决并删除它:) @matheszabi “Proguard 有没有可能在这方面做得这么好,可以称为增加了安全性?” @SimonZettervall 不,任何简单的混淆至少对我来说都是 0 有一些付费应用程序,它不仅会混淆,而且会使“你的字符串”到函数调用,返回相同购买你可以搜索并找到它很容易找到“你的”字符串,需要进行异或或其他位操作。那些减慢了黑客方法的速度,但至少对我而言并非如此。 android 是不安全的,那不是。在 ios 中,您至少必须阅读二进制文件。如果有人写了一个密码来锁定一个小盒子,那么其他人就可以打开它。需要多少时间以及什么设备是另一个问题。 100% 安全是神话 【参考方案1】:

一般来说,你可以让饼干更难吃。你越努力,剩下的就越少。尤其是在经济激励有限的情况下。

您的代码混淆选项是:

使用proguard,它做得很好,当然不完美,但是很好 使用 DexGuard,它可以使逆向工程变得更加困难,例如 通过加密字符串或检测代码篡改 用 C 编写关键部分

不管代码混淆,让你的网络协议也很难乱七八糟:加密和签名消息,确保消息不能重复(通过使用时间或序列),并验证客户端

不要在磁盘上保存任何敏感的明文。

【讨论】:

非常好的点。我真的很喜欢“用 C 编写关键部分”。 @Micro 要对应用程序中的 C 代码进行逆向工程,用户必须查看汇编代码并对其进行逆向,而不是逆向混淆的 java。

以上是关于proguard 对逆向工程的安全性如何?的主要内容,如果未能解决你的问题,请参考以下文章

Android:Java:Proguard:如何:验证我的 jar(不同的 jar 项目)/apk 是不是已成功处理? (我正在考虑对其进行逆向工程)

Android:逆向工程是如何工作的?

Android - 如何比 proguard 更好地防止黑客攻击或逆向工程? [复制]

在 Android 中使用 R8 和 Proguard 时如何保护数据模型类免受逆向工程的影响?

利用proguard对java web工程代码混淆

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