難読化ツールのデバッグはやるもんじゃない.しかも,バイナリを直接変換するのだと最悪だ.
難読化ツールのデバッグに嫌気がさしたので,AddTracer を触ってみた.バージョン 1.6 にしてから,複数のクラスファイルへのトレーサ埋め込むと,最初のターゲット以外が ClassFormatError となっていた.で,修正のためいじってみた.
1 時間くらい悩んだが,原因は再初期化忘れ.バージョン 1.5 まで,クラスファイル更新器は クラスファイルごとに作っていたのだが,1.6 から使い回すことにしたのだった.んで,使い回すときに再初期化せずに,前の情報に追加する形で変換を続けたので,メソッド数がえらいことになっていた.
バージョン 1.7 ではこういうバグはないはず.ついでにファイルの構成も変えてみた.AddTracer というアプリケーション部分とインストラクション更新用ライブラリにわけて,他でも使い回せられるようにしようとしている.次のバージョンでは別のライブラリに分けると思う.
ついでに help オプションで出力されるメッセージが思いっきり間違っていたので,それも修正.