自加密应用程序,以避免在非根 android 设备上反汇编
Self-encrypting application to avoid disasembling on non rooted android devices
我正在尝试为 android.
开发一个具有自加密功能的应用程序
思路如下:
- app 应该执行它的功能(例如显示 "Hello world!")但是...
- 应用程序代码完全(部分)加密存储,即 "all what can be encrypted should be encrypted",因此不能通过简单的反汇编以正确的方式读取它(即它是逐字加密的(例如通过 AES)所以它是向系统表示为随机数 commands/symbols 或不正确)。
- 应用程序的"part"在执行前需要解密;
- 未使用的"parts"应用程序应在使用后解密;
- 以上所有操作都需要app自己完成。
所以核心思想就是自加密
我知道什么是混淆,所以请不要提及它。任何辅助应用程序都一样。我不会把我的余生都花在逆向工程上)))。所以...
- 自加密 Android (JAVA) 代码的正确方法是什么?
- 如何实现上述算法?
- 如果您能够做到这些,请提供任何代码片段或任何 links/information/articles/pseudocode/ideas
我认为这个想法很棒而且非常有趣,而且很多人会很高兴知道如何保护他们的应用程序。
[编辑]
感谢@Pace and @JimmyB for custom ClassLoader idea. I'll try to implement it. Also my thanks to @xalo提出变形引擎的概念,我会深入研究这个主题,因为我认为它会更大程度地满足我的目标。
您不应该尝试对您的应用程序进行自我加密,它会增加很多复杂性而没有那么多保护。
事实上,一旦应用 运行.
,黑客只需反转您的解密程序或转储内存
作为 Java/Android 应用程序防止逆向的最佳方法是混淆。
我正在尝试为 android.
开发一个具有自加密功能的应用程序思路如下:
- app 应该执行它的功能(例如显示 "Hello world!")但是...
- 应用程序代码完全(部分)加密存储,即 "all what can be encrypted should be encrypted",因此不能通过简单的反汇编以正确的方式读取它(即它是逐字加密的(例如通过 AES)所以它是向系统表示为随机数 commands/symbols 或不正确)。
- 应用程序的"part"在执行前需要解密;
- 未使用的"parts"应用程序应在使用后解密;
- 以上所有操作都需要app自己完成。
所以核心思想就是自加密
我知道什么是混淆,所以请不要提及它。任何辅助应用程序都一样。我不会把我的余生都花在逆向工程上)))。所以...
- 自加密 Android (JAVA) 代码的正确方法是什么?
- 如何实现上述算法?
- 如果您能够做到这些,请提供任何代码片段或任何 links/information/articles/pseudocode/ideas
我认为这个想法很棒而且非常有趣,而且很多人会很高兴知道如何保护他们的应用程序。
[编辑] 感谢@Pace and @JimmyB for custom ClassLoader idea. I'll try to implement it. Also my thanks to @xalo提出变形引擎的概念,我会深入研究这个主题,因为我认为它会更大程度地满足我的目标。
您不应该尝试对您的应用程序进行自我加密,它会增加很多复杂性而没有那么多保护。
事实上,一旦应用 运行.
,黑客只需反转您的解密程序或转储内存作为 Java/Android 应用程序防止逆向的最佳方法是混淆。