1

(Dotfuscatorを使用して).NETアセンブリを難読化するプロセス中に、名前の変更方法を微調整していることに気付きました。これには、多くの場合、ILDASMでアセンブリを確認し、タイプを定義されているソースコードファイルまでさかのぼって追跡することが含まれます。

通常、これは単純なプロセスです。しかし、匿名タイプを見つけるのは非常に難しいことがわかりました。特に大規模なアセンブリではそうです。

次のコード行など、匿名タイプの場所を検索しようとしている場合:

new { Name = 'Gene', Age = 30 }

これは次のようにコンパイルされます:

<>f__AnonymousType0`2'<'<Name>j__TPar','<Age>j__TPar'>`

そして、ILDASMツリーにアセンブリのルートとして表示されます。

ソースコードで匿名タイプを見つけたい場合、私はあまり助けがないままになります:

  • 名前空間なし
  • 検索する記号がありません
  • ソリューションナビゲータには何もありません
  • クラスビューには何もありません
  • オブジェクトブラウザには何もありません

私は何かが足りないのですか?コードファイルで匿名タイプを見つけるのに役立つツールはありますか?

4

1 に答える 1

3

明らかに、匿名クラス自体のコードは元のソースコードには存在しませんが、匿名クラスの作成につながるソースコードがあり、それがあなたが見つけようとしているものだと思います。ただし、複数のソースファイルが関係している場合があります。

たとえば、あなたの例では、次のようになります。

Class1.cs:
    var x = new { Name = "Jon", Age = 10 };

Class2.cs:
    var y = new { Name = 100, Age = 10m };

// And potentially many other source files

これらは両方とも同じ汎用型を使用しますが、型引数が異なります。基本的に、同じプロパティ名を同じ順序で使用して、すべてのanonymous-object-creation-expression式を検索する必要があります。メタデータにここで直接役立つものが何も含まれていなくても驚かないでしょう。

編集:生成されたコードには、もちろん、匿名型のコンストラクターへの参照が含まれているので、それを探すことができます。使用しているツールは明確ではありませんが、IL内で匿名タイプの名前を検索すると問題ありません。

于 2011-09-26T15:59:49.337 に答える