Eclipse的抽象语法树解析器的替代方法,用于代码操作

Sco*_*ain 6 java obfuscation abstract-syntax-tree deobfuscation

背景

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

这是为什么我的源代码是针对混淆的jar编写的.我有一个通过自定义版本RetroGaurd运行的jar的去混淆版本,我想解析传递给RetroGaurd的映射文件,以解混我的源代码进入jar的函数调用.如果我只是编译我的代码并通过RetroGaurd运行它,当我反编译我松散所有我的好评论和格式化(除非我错过了RetroGaurd上的选项).


问题

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

我主要担心的是当我编写代码时,我对Eclipse使用的内部jar有很多依赖.我知道,如果我遵守图书馆的EPL我将不会分发它,但我担心这个项目越来越大,因为我需要越来越多来自Eclipse的SDK.

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

kri*_*arp 0

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

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

希望能帮助到你。