5

背景

我正在编写一个程序,它将在 java 源代码目录中对成员和函数进行一些批量重命名,以根据传入程序的查找表 .csv 文件对代码进行去混淆处理。

这是为了我的源代码是针对一个混淆的 jar 编写的。我有一个通过自定义版本RetroGaurd运行的 jar 的去混淆版本,我想解析传递给 RetroGaurd 的映射文件,以去混淆我的源代码对 jar 的函数调用。如果我只是编译我的代码并在反编译时也通过 RetroGaurd 运行它,我会丢失所有漂亮的注释和格式(除非我错过了 RetroGaurd 上的一个选项)。


问题

我发现了Eclipse 内置的抽象语法树解析器,它看起来非常适合我的使用,但是我不打算将我的程序编写为 Eclipse 的插件,这将是一个可以在任何机器上运行的独立 jar .

我主要担心的是,当我编写代码时,我对 Eclipse 使用的内部 jar 有很多依赖。我知道,如果我符合库 jar 的EPL,我将不会有分发它的问题,但我担心这个项目在我编写它时会变得越来越大,因为需要越来越多的来自 Eclipse 的 SDK 的 jar。

是否有任何其他项目可以让我能够解析 Java 源代码以像 AST 一样可靠地查找和替换,或者有没有办法使用 RetroGaurd(或类似的程序)来运行相同的去混淆,但保持我的评论和功能相同,而无需在之后通过反编译器运行去混淆的程序?

4

1 回答 1

0

如果您担心需要运行 Eclipse GUI 来执行代码,那么您可以考虑在无头模式下运行插件。这将允许您的插件从命令行运行。请参阅此SO 线程

您还可以使用任何其他开源 Java 编译器。例如,openjdk 的 Java 编译器。请参阅资源部分。

希望能帮助到你。

于 2013-10-05T14:57:41.680 回答