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

时间:2012-02-20 20:44:24

标签: java obfuscation abstract-syntax-tree deobfuscation

背景

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

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


问题

我发现Eclipse中内置了Abstract Syntax Tree解析器,它看起来非常适合我的用途,但我不打算将我的程序编写为Eclipse的插件,这将是一个独立的jar,可以可以在任何机器上运行。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

希望它有所帮助。