Java代码混淆,获取原始类名

Java代码混淆,获取原始类名,java,class,obfuscation,deobfuscation,Java,Class,Obfuscation,Deobfuscation,我正在用JAVA开发一个应用程序,需要在运行时在数据库中注册一些类名 问题是,当我们部署应用程序时,它的构建带有一些代码混淆,我认为它被称为ProGuard,它重命名类名以保护.Jar文件 我以前没有使用过代码模糊处理,我相信对于同一个类,模糊处理后的类名的输出在每个包中可能不同。所以这对我来说是个问题 示例混淆的类名 //method of retrieving class name: objMyClass.getClass(); //output: 'MyPackage.MyClass'

我正在用JAVA开发一个应用程序,需要在运行时在数据库中注册一些类名

问题是,当我们部署应用程序时,它的构建带有一些代码混淆,我认为它被称为ProGuard,它重命名类名以保护.Jar文件

我以前没有使用过代码模糊处理,我相信对于同一个类,模糊处理后的类名的输出在每个包中可能不同。所以这对我来说是个问题

示例混淆的类名

//method of retrieving class name:
objMyClass.getClass(); //output: 'MyPackage.MyClass'

//result building obfuscater enabled:
objMyClass.getClass(); //obfuscated output: 'X.B'
所以我的问题是:

有没有一种方法可以在没有Vulcan权限的情况下进行编程解析/转换:代码模糊时的原始类名?我有原始的未模糊处理的.Jar/.Java文件,或者在运行时是否有其他方法来标识给定对象的原始类类型

谢谢


Jelte.

如果不知道代码是如何混淆的,就不可能在运行时获得原始类名。混淆器的作用是使代码模棱两可,但仍能正常工作。您需要一种在运行时以编程方式消除混淆的方法。

您的目标是什么?如果您已经有了未模糊处理的java和jar文件,这只是为了看看模糊处理有多彻底吗?我现在在您的问题中看到了,很抱歉我错过了。根据ProGuard的说法,class.ForName看起来仍然有效:我见过的每个模糊处理程序都允许指定某些不应模糊的类名。@Gus:给定的对象类型类名是动态的,所以我没有某种“固定”列表,我需要在运行时动态地通过其原始类名来识别对象,因为当进行模糊处理时,类名可以在其他包中进行模糊处理/以不同的方式调用。不,这不是为了实验目的;如果类名被混淆了,知道原始类名对你有什么好处???好吧,可以这样做-只需在类中定义一个静态变量:static String originalClassName=TheOriginalClassName;。哈,我想你是对的。我觉得这可能会破坏模糊处理的大部分目的。好吧,甚至想要模糊处理类名的原始名称也没有多大意义,因为除了记录它之外,你真的无法对它做任何事情。