アセンブリは、C# のようにコードを解釈する C++ プロジェクト用に Visual Studio .NET によってコンパイルされますか? (したがって、そこにある多くのツールによって、完全なソースコードに簡単に逆コンパイルできます)
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 を使用していない部分のみです。
- または C++/CLI... しかし、.NET Reflector の MSIL -> C++/CLI コンバーターは非常にバグが多く、他の逆コンパイラーがサポートしようとしても、同じことが当てはまると思います。
于 2013-08-23T21:17:38.657 に答える