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

Posted

技术标签:

【中文标题】Android - 如何比 proguard 更好地防止黑客攻击或逆向工程? [复制]【英文标题】:Android - How to give protection against hacking or reverse engineering, better than proguard? [duplicate] 【发布时间】:2013-06-05 07:03:21 【问题描述】:

我知道有 apktool 用于逆向工程,dex2jar 可以提取为 jar 文件。我还听说过 proguard,它优化了代码以使其难以理解。但是,proguard 是否足以防止逆向工程?据我了解,即使在使用 proguard 之后,资源文件仍然可以更改(但我不确定)。还有其他更好的技术吗?有没有办法,如果有人尝试使用 apktool,代码和资源都会被破坏?

【问题讨论】:

密切关注实际的投资回报率,而不是您的想法。 对不起,我没有在搜索中找到类似的帖子。我现在应该删除这个吗? 【参考方案1】:

但是 proguard 是否足以防止逆向工程?

只有你才能定义什么是“足够”。

据我了解,即使使用了proguard,资源文件仍然可以更改

任何东西都可以在使用 ProGuard 之后进行更改,包括资源。

还有其他更好的技术吗?

从数学上讲,要停止逆向工程是不可能的。毕竟,如果一个 CPU 可以读取一条指令并对其进行处理,那么 CPU 就可以读取一条指令并对其进行反编译。

ProGuard、DexGuard(一种加密资源的增强型 ProGuard)、在 C/C++ 中加入的逻辑比在 Java 中更多,这样可以帮助减缓逆向工程,但它们无法阻止它。因此,再一次,只有你才能定义什么是“足够”。

有没有办法,如果有人尝试使用 apktool,代码和资源都会被破坏?

好吧,恕我直言,ProGuard 不会“破坏” apktool 的代码输出。但是,如果您认为 ProGuard 足以保护您的代码,那么 DexGuard 应该足以保护您的资源。不过,DexGuard 是一个商业产品,我看的最后一个。

如果您担心逆向工程,请不要编写客户端软件。

【讨论】:

至少,我不希望它被轻易地反转编码。因为,据我所知,很多人只是使用这些工具并更改资源,而不会费心去了解代码是如何编写和发布的。在哪里,主要编码人员可能在编码背后花费了大量精力。 @NafisAbdullahKhan:“在哪里,主要编码员可能在编码背后花费了很多精力”——地球上除了“主要编码员”之外,关心多少的人为零努力了。同样,如果您担心逆向工程,请不要编写客户端软件。 这对我来说听起来不道德,尽管我不确定在这种情况下什么被认为是不道德的。但是,如果每个人都可以接受,那么也许我也应该从它开始我的旅程。 :) 但是是否有任何规则说“如果您被指控为该应用程序的复制者/修改者,您将受到惩罚”?如果没有,那我可以走了。 (或者我应该发布另一个关于它的问题?) @NafisAbdullahKhan:“这对我来说听起来不道德,尽管我不确定在这种情况下什么被认为是不道德的”——我从未说过逆向工程是道德的。 “但有没有规定‘如果你被指控为这个应用程序的复制者/修改者,你将受到惩罚’?” -- 请咨询律师,讨论您所在国家/地区关于软件逆向工程的版权法(和相关法律)。

以上是关于Android - 如何比 proguard 更好地防止黑客攻击或逆向工程? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在android studio中启用proguard? [复制]

如何在android studio中启用proguard? [重复]

android - 如何让 enum 远离 proguard

Android - 如何消除这些 gradle/proguard 警告?

如何在我的 Android 库 (AAR) 中包含 proguard 配置

如何在 android 中使用 ProGuard 和 OrmLite