Reflectorを実行して一部のプログラムを逆コンパイルしましたが、難読化されているようです。
次の出力が得られましたが、あまり役に立ちません。
難読化されたコードを逆コンパイルする方法はありますか?
[CompilerGenerated]
get
{
// This item is obfuscated and can not be translated.
}
[CompilerGenerated]
set
{
// This item is obfuscated and can not be translated.
switch ((1 == 1))
{
case true:
goto Label_0020;
}
goto Label_0018;
if (((0 == 0) ? 0 : 1) != 0)
{
}
this.eval_t = value;
}
技術的には、難読化されたコードの逆コンパイルは、難読化されていないコードの逆コンパイルと同じです。 。難読化の全体のポイントは、人々がReflectorなどを使用してコードを逆コンパイルし、コードの内部がどのように機能するかを理解できないようにすることです。
難読化を元に戻す簡単な方法はありません。あなたはコードをそのまま歩くのにかなり行き詰まっています。
ILSpyを試しましたか?
http://wiki.sharpdevelop.net/ILSpy.ashx
難読化されたコードでかなりうまくいきましたが、変数の名前が変更されているため、ガベージのように見えますが、かなり順守できます。
使用されている難読化ツールを特定することは困難ですが、de4dot(.NET deobfuscator)が役立つ可能性があります: https://github.com/0xd4d/de4dot
メソッドと変数の名前を「匿名」の名前に変更することから、プログラムロジックをマングル化すること、さらにはランタイムの難読化エンジンに至るまで、実際にはいくつかの(少なくとも4つの)非常に異なる種類の難読化があります。
これを行うためのツールは、無料のプラグイン(一部のプログラマーは、すべてのコードをそのように作成することさえできます:))から、ハイエンドで高価な商用ツールまでさまざまです。答えが異なる場合があるかどうかに応じて、何を扱っているかを知る必要があります。
あなたの場合、コードはおそらくレベル2のように見えます。つまり、変数だけでなく、コードパスのマングリングも行われます。つまり、完全に有効であり、まったく同じ結果が得られますが、手動で解析するのは非常に困難です。 (単なる名前付けの場合は、コンテキストと範囲に応じて名前を段階的に変更し、そこから把握することができます)。
私には簡単な解決策はありませんが、問題は-それで何をしたいですか?