Java 加密Android代码?

Java 加密Android代码?,java,android,security,encryption,obfuscation,Java,Android,Security,Encryption,Obfuscation,可能重复: 我知道混淆,但它只会使代码更难理解。它并没有真正加密代码。有没有加密Android代码的方法?或者有没有其他方法可以使代码在反编译时更不可恢复 我问这个问题是想知道我所寻找的是否可能。现在,我的想法是加密代码是不可能的,因为如果我们加密它,Dalvik也将无法理解代码并运行它。但我不是很确定。有可能我不知道什么 请发表你对此的看法,或者如果你有任何建议?此外,请考虑一个财务应用程序,其中访问一个人类可读代码意味着能够理解金融过程在后端上的流动。谢谢大家! 根据定义,机器必须能够读取

可能重复:

我知道混淆,但它只会使代码更难理解。它并没有真正加密代码。有没有加密Android代码的方法?或者有没有其他方法可以使代码在反编译时更不可恢复

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


请发表你对此的看法,或者如果你有任何建议?此外,请考虑一个财务应用程序,其中访问一个人类可读代码意味着能够理解金融过程在后端上的流动。谢谢大家!

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


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

通过隐藏代码、插入伪指令等方式,有不同的努力使标准DEX反编译工具的工作更加困难。这几乎都是研究阶段,但是你可以通过一些示例工具在网上找到关于它的论文和演示

ProGuard的作者还提供了一个(不是免费的)加密字符串的工具(标准的模糊处理没有),使得在反编译代码中搜索内容变得更加困难。我个人没有用过,但你可能想试试


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

“请发表你对此的看法”我认为这很愚蠢。1) 没有人想偷你的密码。2) 如果应用程序。事实证明,它是一个“杀手级应用”。如果你让一组人来描述输入和输出,然后让一组程序员来编程,它通常会成为一个更好的克隆它更便宜、更好、合法。@AndrewThompson:我不担心有人偷密码。我问上述问题是因为我担心其他人会从阅读代码中获得哪些敏感信息。@Arci总是有人对您的代码进行反向工程并了解其工作原理的风险。首先假设代码将被反编译和研究,然后尽最大努力设计保护用户及其数据的软件。如果一个系统是安全的,那么它的设计应该可以在不损害系统或其用户的情况下公开。“其他人可以从阅读代码中获得哪些敏感信息。”所有这些。二进制文件必须在某个阶段解密,然后敏感信息就会被盗。@acj:谢谢你的回复!:)我同意你的看法,这一切最终都取决于体制。但在Android上加密代码是否可行?或者,为了防止代码被理解,混淆真的是我能做的最好的方法吗?是的,根据定义,任何有机器的人都可以阅读代码。但这是因为代码是机器可读的。有没有办法让人看不懂?混淆增加了理解代码的难度。但这还不够。有没有更好的方法对黑客隐藏代码?我正在考虑加密密码,但有这样的事吗?请注意,我指的是Android应用程序。考虑到黑客可以运行该程序,不,实际上没有这样的事情。谢谢你的评论!我将对DexGuard进行更多的研究!:)如果它能加密字符串,那么生活就会轻松得多。这是我第一次听说德克斯卫士。除了DexGuard之外,还有没有可以加密Android源代码的工具?或者网络上可用的工具只能混淆代码而不能加密它们?见第一段,有实验性的工具,但这些工具不适合实际项目。好的。谢谢!:)知道了。