Warum ist es so einfach, .NET-IL-Code in Quellcode zu dekompilieren, im Vergleich zu nativen x86-Binärdateien zu dekompilieren? (Reflektor erzeugt die meiste Zeit ziemlich guten Quellcode, während das Dekompilieren der Ausgabe eines C++ - Compilers fast unmöglich ist.)Warum ist es so einfach, .NET IL Code zu dekompilieren?
Ist das so, weil IL viele Metadaten enthält? Oder liegt es daran, dass IL eine höhere Abstraktion ist als x86-Anweisungen? Ich recherchierte und fand die folgenden zwei nützlichen Artikel, aber keiner von ihnen beantwortet meine Frage.
Es gibt (oder waren) ziemlich gute Decompiler für C/C++, mit Bibliotheks-Plugins für verschiedene Versionen von Watcom, Borland, Microsoft und anderen gängigen Compilern. Z.B. IDA. Das macht jedoch nicht das, was Sie falsch sagen, CLI * ist * eine abstraktere, höhere, aber sauberere Laufzeitumgebung als x86. –
IDA ist kein Decompiler, obwohl das Unternehmen, das es erstellt, einen Decompiler namens hex-rays erstellt. Die Qualität der x86-Dekompilierung ist viel niedriger als die Qualität der Dekompilierung von jvm oder msil. –