2017-10-19 84 views
-3

我正在尝试开发一款应用程序,其中包括Android自加密应用程序。自加密应用程序,以避免在非rooted安卓设备上出现乱码

的想法是以下几点:

  • 应用程序应该执行它的功能(例如显示的 “Hello world!”),但...
  • 完全存储在应用程序代码(部分)进行加密,即“所有什么可以加密应该被加密“,所以它不能通过简单的反汇编以正确的方式被读取(即,它被字面加密(例如通过AES),所以它被表示为系统中的许多随机命令/符号或者不适用不正确)。
  • 应用程序的“部分”应在执行前解密;
  • 应用程序未使用的“部分”应在使用后解密;
  • 上面提到的所有操作都应该由app自己完成。

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

我知道什么是混淆,所以请不要提及它。任何一侧的应用程序都是一样的。我不会花我所有的余生在逆向工程中)))。所以...

  • 自加密Android(JAVA)代码的正确方法是什么?
  • 怎样才能实现上面提到的算法?
  • 请提供任何代码片段,如果妳能够做这样的事情或任何链接/信息/用品/伪/想法

我的事情的想法是伟大的,真正有趣的,再加上很多人会很高兴知道如何保护他们的应用程序。

[编辑] 感谢@Pace@JimmyB为自定义ClassLoader的想法。我会尽力实施它。我还要感谢@xalo提出了变质发动机的概念,我会深入探讨这个主题,因为我认为它会更大程度上满足我的目标。

+0

这个问题是这个网站太宽泛。你可能想要创建一个自定义类加载器。 – Pace

+0

您可以使用/实现一个自定义的['ClassLoader'](https://developer.android.com/reference/java/lang/ClassLoader.html)来加密解密类。但是,*如果*您的应用可以'解密'代码,那么攻击者/黑客也可以。 – JimmyB

+0

谢谢你们的定制类加载器的想法。而现在我明白我的问题实在太广泛了(((( –

回答

1

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

事实上,黑客只需在应用程序运行后反转解密程序或转储内存。

防止反转的最佳方法是Java/Android应用程序混淆。

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

+0

)是的,你说得对,黑客每次运行应用程序都可以转储内存。我忘了告诉它,它应该是用户没有root权限的设备,并且没有权限运行加密的应用程序(例如从服务器)。所以加密应该保存这种情况来保护复制的文件不被分解。我对吗? –

相关问题