我想反编译一个java程序并重新编译派生(混淆)源。我解压了 .jar 档案并得到了一个这样的目录结构:
com/
com/foo/A/
com/foo/A/A.class
com/foo/A/B.Class
com/foo/B/A.class
...
com/foo/A.class
com/foo/B.class
org/foo/Bar.class
...
问题是包和类之间存在名称冲突,导致无法重新编译反编译的类文件。反编译的类将如下所示:
package org.foo;
import com.foo.A; // <-- name collision error
class Bar {
...
}
有没有办法在不重命名类文件的情况下解决这些命名问题?
编辑:这不是一个反编译器问题,而是一个问题,如何让一个工作的 .jar 文件包含违反命名约定的类。
EDIT2:好的,我猜在字节码级别这样的命名是可能的,所以使用更智能的反编译器(自动重命名类并修复它们的引用)这个问题可以解决。