0

アセンブリは、C# のようにコードを解釈する C++ プロジェクト用に Visual Studio .NET によってコンパイルされますか? (したがって、そこにある多くのツールによって、完全なソースコードに簡単に逆コンパイルできます)

4

2 に答える 2

2

C# は解釈されません。

また、C# (またはその他の言語) から IL へのコンパイルは、一方通行と見なされるべきであることに注意してください。アセンブリを IL に逆コンパイルし、それを C# に変換して戻すことができます。Ben と Trant がコメントで指摘したように、元のコードの一部が結果のコードに再表示される場合がありますが、使用する言語の機能が増えるほど、結果のコードは元のコードとは異なります。

于 2013-08-23T21:02:47.233 に答える
2

したがって、あなたが尋ねようとしていた質問に答えるには:

を使用して C++ コードをコンパイルすると/clr、コンパイラはマシン コードの代わりに MSIL と、プログラム構造を記述する .NET メタデータを生成します。逆アセンブラーが同じことを行う編集可能な C# 1コードを生成するには、これで十分です。

C++/CLI プロジェクトに通常の C++ コードがある場合 (したがって が必要です/clr) を使用#pragma managed(off)して、プログラムの一部を (可逆性の低い) マシン コードにコンパイルすることができます。ただし、実際には .NET を使用していない部分のみです。


  1. または C++/CLI... しかし、.NET Reflector の MSIL -> C++/CLI コンバーターは非常にバグが多く、他の逆コンパイラーがサポートしようとしても、同じことが当てはまると思います。
于 2013-08-23T21:17:38.657 に答える