1

可能重复:
如何加密 .jar 文件

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

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

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

4

2 回答 2

2

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

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

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

于 2012-11-06T05:42:31.417 回答
1

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

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

于 2012-11-06T01:57:28.227 回答