難読化の持つ潜在的な欠点の 1 つは、名前が改変されることにより、難読化処理されたアプリケーションのデバッグやトラブルシューティングが困難になる可能性があるということです。 Dotfuscator はこの欠点を解決するために統合ツールを提供しています。このツールを使用すると、出力割り当てファイルを基に、難読化されたスタック トレースから元のシンボルを復元できます。 これは Dotfuscator UI で[ツール]メニューの[難読化されたスタック トレースのデコード]を選択して開くことができます。
メモ: この機能は、Dotfuscator Community の登録後に利用できます。 詳細については、Dotfuscator Community の登録を参照してください。
たとえば、難読化処理済みのアプリケーションを顧客に発送し、顧客の 1 人からスタック トレースを受け取った場合、そのスタック トレースは次のようなものになるでしょう。
Unhandled Exception: System.ApplicationException: A bad thing happened!
at a.a()
at b.a(String A_0)
at b.a(String[] A_0)
XML 割り当てファイルを使用すれば、手動で元の名前を復元できますが、これは退屈で時間のかかる処理になる場合があります。 スタック トレースの変換ツールは、割り当てファイルを指定し、スタック トレースをウィンドウに貼り付けて[変換]ボタンを押すことにより、この処理を自動化します。 変換されたスタック トレースが、下の画面のように表示されます。
難読化されたスタック トレースのうち、いくつかのメソッドはあいまいになる可能性があります。つまり、オーバーロード誘導の使用によって、難読化されていないメソッドで一致するものが複数存在することがあるからです。 このような場合、ツールはすべての可能性を表示します。
特定の型やメソッドを名前で検索したい場合は、[特定要素の変換]タブをクリックします。 変換したい特定の項目の難読化処理後の名前を入力できる画面が表示されます。
- 型を調べる場合は、[型名]テキスト ボックスに値を入力し、[変換]をクリックします。
- メソッドを調べる場合は、[型名]および[メソッド名]テキスト ボックスに値を入力します。 署名の指定は任意で、[メソッドの署名]チェック ボックスをオンにし、その隣にあるテキスト ボックスに署名を入力することで指定できます。 署名は、スタック トレースに示されるとおりの値である必要があります。