5

バックグラウンド

プログラムに渡されたルックアップ テーブル .csv ファイルに基づいてコードの難読化を解除するために、Java ソース コードのディレクトリ内のメンバーと関数の名前を一括で変更するプログラムを作成しています。

これは、私が持っているソース コードが難読化された jar に対して書かれているためです。カスタマイズされたバージョンのRetroGaurdを介して実行された難読化解除されたバージョンの jar があり、RetroGaurd に渡されたマッピング ファイルを解析して、ソース コードが jar に作成する関数呼び出しの難読化を解除したいと考えています。コードをコンパイルし、逆コンパイルするときに RetroGaurd でも実行すると、素敵なコメントと書式設定がすべて失われます (RetroGaurd に見逃したオプションがない限り)。


問題

Abstract Syntax Treeパーサーが Eclipse に組み込まれていることを発見しました。これは私の用途に最適に見えますが、プログラムを Eclipse のプラグインとして作成するつもりはありません。これは、任意のマシンで実行できるスタンドアロンの jar になる予定です。 .

私の主な懸念は、コードを書いているときに、Eclipse が使用する内部 jar に多くの依存関係を取得していることです。ライブラリ jar のEPLに準拠していれば、配布に問題がないことはわかっていますが、Eclipse の SDK からの jar がますます必要になるため、このプロジェクトを作成するにつれて、このプロジェクトがどんどん大きくなっていくのではないかと心配しています。

ASTが許可するように、Javaソースコードを解析して検索と置換を確実に実行できるようにする他のプロジェクトはありますか、またはRetroGaurd(またはそれに似たプログラム)を使用して同じを実行する方法はありますか難読化を解除しますが、後で逆コンパイラを介して難読化解除されたプログラムを実行する必要なく、コメントと機能を同じに保ちますか?

4

1 に答える 1

0

コードを実行するために Eclipse GUI を実行する必要があることが心配な場合は、プラグインをヘッドレス モードで実行することを検討できます。これにより、プラグインをコマンドラインから実行できるようになります。このSO スレッドを参照してください。

他のオープン ソース Java コンパイラを使用することもできます。たとえば、openjdk の Java コンパイラ. リソースセクションを参照してください。

それが役に立てば幸い。

于 2013-10-05T14:57:41.680 に答える