自加密应用程序,以避免在非root用户设备上出现故障

时间:2017-10-19 15:28:34

标签: java android encryption self-reference

我正在尝试使用自加密技术为Android开发应用程序。

这个想法如下:

  • app应该执行它的功能(例如显示" Hello world!")但是......
  • 应用程序代码完全(部分)加密存储,即"所有可加密的内容都应加密",因此无法通过简单的正确拆卸方式读取(即它是字面加密的(例如,通过AES)它被系统表示为一些随机命令/符号或smth。不正确)。
  • " part"应该在执行前解密应用程序;
  • 未使用"部件"应用程序应在使用后解密;
  • 上述所有操作都应由app本身完成。

所以核心思想是自我加密。

我知道什么是混淆,所以请不要提及。任何一方应用都是一样的。我不打算在逆向工程中度过余生)))。所以......

  • 自我加密Android(JAVA)代码的正确方法是什么?
  • 如何实现上述算法?
  • 如果您能够做这些事情或任何链接/信息/文章/伪代码/想法,请提供任何代码片段

我认为这个想法很棒而且非常有趣,而且很多人会很高兴知道如何保护他们的应用程序。

[EDITED] 感谢@Pace@JimmyB了解自定义ClassLoader的想法。我会尝试实现它。我还要感谢提出变形引擎概念的@xalo,我会深入研究这个主题,因为我认为它会在更大程度上满足我的目标。

1 个答案:

答案 0 :(得分:2)

你不应该尝试自我加密你的应用程序,它会增加很多复杂性,而不是那么多的保护。

事实上,一旦应用程序运行,黑客就必须撤销你的解密程序或转储内存。

防止逆转的最佳方法,因为Java / Android应用程序是混淆。

您还可以查看远程变形引擎概念https://media.defcon.org/DEF%20CON%2024/DEF%20CON%2024%20presentations/DEFCON-24-Amro-Abdelgawad-The-Remote-Metamorphic-Engine.pdf