Java 如何从Android应用程序包中完全隐藏类?

Java 如何从Android应用程序包中完全隐藏类?,java,android,apk,obfuscation,apktool,Java,Android,Apk,Obfuscation,Apktool,不久前,为了理解一些代码片段,我正在用apktool反编译一个应用程序。奇怪的是,应用程序被混淆了,事实上,应用程序只提供了一个名为Protection.class的类,其中包含class.forName或class.getMethod之类的方法 在google上搜索这当然是反射结构,但是,看到一些教程,我知道反射调用的类必须在应用程序包中。在我的例子中,除了保护类,没有其他类 最后,我的问题是: 是否可以从包中完全去掉类,并以某种方式使用它们的方法?如果是,它们存储在apk文件夹中的什么位置?

不久前,为了理解一些代码片段,我正在用apktool反编译一个应用程序。奇怪的是,应用程序被混淆了,事实上,应用程序只提供了一个名为Protection.class的类,其中包含class.forName或class.getMethod之类的方法

在google上搜索这当然是反射结构,但是,看到一些教程,我知道反射调用的类必须在应用程序包中。在我的例子中,除了保护类,没有其他类

最后,我的问题是: 是否可以从包中完全去掉类,并以某种方式使用它们的方法?如果是,它们存储在apk文件夹中的什么位置? 是否有一种与apk构建过程交互的方法来混淆代码或类似的东西(在本例中是从包中隐藏类)


注意:Proguard无法做到这一点,我在过去已经测试过了

您可以使用Proguard保护apk文件不受反编译程序的影响。您还可以使用DexGaurd来提高安全性

您可以使用php库的Progourd,为您的项目编写一个Progourd,然后在eclipse中的Progourd文件的android studio中的gradle文件中附加到您的应用程序项目。
为此,php有一个名为php_progaurd的优秀库。您的屏幕截图显示,这是一个受DexGuard保护的应用程序。ProGuard的商业开发更进一步


另请参见此答案:

您可以为此使用DexGuard。DexGuard拥有许多其他功能,能够在运行时对类进行加密和解密。这些类只在运行时出现在内存中,因此不能从静态APK中反转任何源代码。DexGuard是由ProGuard的创建者开发的商业产品。我建议你联系他们helloworld@guardsquare.com.

干杯


h4

问题在于proguard只是混淆了代码,但是smali文件可以毫无问题地读取。。我要搜索的是了解apk构建过程是如何工作的,以便了解如何隐藏类及其存储位置。要了解过程,请阅读官方文档链接是的,我阅读了,但我的问题是相同的,是否有一种方法可以与apk构建过程交互,以混淆代码或类似的内容(在本例中是从包中隐藏类)?此链接可能对您有所帮助@Alessiotrecani再次感谢您的回答。。。无论如何,我已经读过了,我的问题没有答案。他们谈论proguard,但这不起作用,他们还谈论代码混淆。我的问题是另一个。proguard不能做我要找的。。我想知道的是如何与构建过程交互,而不是如何混淆我的应用程序。你能描述更多你想要的东西吗?听起来所有必要的类都必须被移动到保护类中的内部类。如果你还记得是哪个应用程序,那将是最有用的信息。谢谢你的回答。。apk是perkTv的一个模版或类似的东西。我想这正是你所说的。。我如何在一个类中包含所有类,并使用反射调用它们。注意:我有一个jd gui的屏幕截图,里面有一些代码。如果你想看,我可以从原始类发布,我认为它们会被划分为多个较小的类,在我的情况下,它们完全隐藏了。。但无论如何,非常感谢你的线程链接。。这对我帮助很大。