【问题标题】:Encrypting Android code? [duplicate]加密Android代码? [复制]
【发布时间】:2012-10-25 22:44:55
【问题描述】:

可能重复:
How to encrypt a .jar file

我知道混淆,但它所做的只是让代码更难理解。它并没有真正加密代码。有没有办法加密Android代码?或者有什么办法可以让反编译的代码更加不可恢复?

我问这个问题是为了知道我正在寻找的东西是否可能。现在,我的想法是不可能加密代码,因为如果我们加密它,Dalvik 也将无法理解代码并运行它。但我不太确定。有可能我什么都不知道。

请发表您对此有何看法或有什么建议?另外,请考虑一个金融应用程序,其中可以访问人类可读的代码意味着能够理解后端正在进行的财务流程的流程。谢谢!

【问题讨论】:

  • “请发表您对此有何看法” 我认为这很愚蠢。 1)没有人想窃取你的代码。 2)如果应用程序。事实证明它是一个“杀手级应用程序”。如果你让一组人来描述输入和输出,然后由一组程序员来编程,它通常会成为一个更好的克隆。 -- 它更便宜、更好且合法。
  • @AndrewThompson:我不担心有人窃取代码。我问上面的问题是因为我担心其他人可以通过阅读代码获得哪些敏感信息。
  • @Arci 总是存在有人对您的代码进行逆向工程并了解其工作原理的风险。从代码将被反编译和研究的假设开始,并尽最大努力设计能够保护其用户及其数据的软件无论如何。如果一个系统是安全的,那么它的设计应该可以在不损害系统或其用户的情况下公开。
  • “其他人可以通过阅读代码获得哪些敏感信息。” 全部。二进制文件必须在某个阶段被解密,然后敏感信息就会被盗。
  • @acj:感谢您的回复! :) 我同意你的观点,最终这一切都取决于系统。但是是否可以在 Android 上加密代码?或者混淆真的是我能做的最好的保护我的代码不被理解的方法吗?

标签: java android security encryption obfuscation


【解决方案1】:

为了让标准 DEX 反编译器工具变得更难,通过隐藏代码、插入伪指令等,有不同的努力。这几乎都是研究阶段的 ATM,但您可以在网上找到有关它的论文和演示文稿,以及一些示例工具。

ProGuard 的作者还提供了DexGuard(不是免费的),它可以加密字符串(标准混淆不会),从而使在反编译代码中搜索内容变得更加困难。我没有亲自使用过,但您可能想尝试一下。

但最终,为了能够运行某些内容,您必须解密/解扰/其他内容,以便将其提供给 VM。如果您对设备有完全的控制权(即 root 权限和物理访问权限),您可以转储内存、在系统库中引入挂钩等,并获得实际的可运行代码。正如其他人所建议的那样,如果您有真正敏感的代码,它应该存在于您的服务器上。

【讨论】:

  • 感谢您的评论!我将对 DexGuard 进行更多研究! :) 如果它可以加密字符串,它会让生活变得更轻松。这是我第一次听说 DexGuard。除了 DexGuard,还有没有可以加密安卓源代码的工具?还是网上现有的工具只能混淆代码而不能加密?
  • 见第一段,有实验工具,但不适合实际项目。
  • 好的。谢谢! :) 明白了。
【解决方案2】:

根据定义,机器必须能够读取您的代码。因此...任何有机器的人都可以阅读您的代码。

唯一的替代方案是例如强迫用户联系您的第三方网站并以某种方式从您那里获取信息。

【讨论】:

  • 是的,根据定义,任何拥有机器的人都可以阅读代码。但这是因为代码是机器可读的。有没有办法让它不被人类阅读?混淆增加了理解代码的难度。但这还不够。有没有更好的方法来隐藏黑客的代码?我正在考虑加密代码,但有这样的事情吗?请注意,我指的是 Android 应用程序。
  • 鉴于黑客可以运行程序,不,真的没有这样的事情。
猜你喜欢
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多