2016-05-17 11 views
2

ILSPyを使ってリリースアセンブリを逆コンパイルしたところ、以下のようなコードが得られました。 VS 2013でデコンパイルされたプロジェクトを開くと、これらのステートメントごとにエラーが発生します。ILSpy逆コンパイラのこのコード行は有効ですか?

using #j;//this line shows up as an error in VS2013 
using System; 

エラーは次のとおりです。

プリプロセッサディレクティブは、私はまた、行を次のように同様のエラーを取得するライン

の最初の非空白文字として表示されなければなりません。

string path = #db.#ab(HttpUtility.UrlDecode(text)); 

質問:何#を使用しての意味があり、どのように私はこれらのエラーを修正することができますか?

デコンパイルされたクラスの中には、#で始まる名前があり、いくつかの名前空間とメソッド名もあります。私はそのような命名規則を使ったことがないので、 'ILSpy`がどのようにそのようなコードを思いついたかは非常に混乱しています。

+1

参照先のdllが難読化されているように見えます。 – vendettamit

+0

これは、難読化されたコードがデコンパイラによってどのように逆コンパイルされるかです。私のために何か新しいこと。ありがとう。 – Sunil

答えて

8

いいえ、無効な​​C#です。可能性は、最初に難読化された逆コンパイルされたコードなので、ILでは有効だがC#では有効ではない識別子を使用する可能性があります。

通常、難読化されたコードを逆コンパイルする場合、元のコード作成者の希望に反して何かをしているので、そうしないことをお勧めします。ソースコードを入手する正当な理由があると思われる場合は、著者にお尋ねください。

これを有効なC#に変換できますか?確かに - すべての# -prefixed identifierをとり、(一貫して)別のものにマップします。

using hashj; 
... 

string path = hashdb.hashab(HttpUtility.UrlDecode(text)); 

...そして最終的に、あなたが、その後hashdbなどに名前を変更したい#dbというクラス全体で実行されます。しかし、難読化のポイントは、この痛みを伴うプロセスにすることです。

+0

わかった。優れた答えをありがとう。 – Sunil

関連する問題