Perché è così facile decompilare il codice IL in codice sorgente, rispetto alla decompilazione dei binari nativi x86? (Reflector produce codice sorgente abbastanza buono la maggior parte del tempo, mentre decompilare l'output di un compilatore C++ è quasi impossibile.)Perché è così facile decompilare il codice .NET IL?
È perché IL contiene molti metadati? Oppure perché IL è un'astrazione più elevata rispetto alle istruzioni x86? Ho fatto qualche ricerca e ho trovato i seguenti due articoli utili, ma nessuno dei due risponde alla mia domanda.
Ci sono (o sono stati) decompilatori piuttosto buoni per C/C++, con plugin di libreria per diverse versioni di Watcom, Borland, Microsoft e altri popolari compilatori. Per esempio. IDA. Ciò non rende ciò che dici sbagliato, tuttavia, CLI * è * un ambiente di runtime più astratto, di livello superiore ma più pulito di x86. –
IDA non è un decompilatore, sebbene la società che lo produce faccia decompilare i raggi esagonali. La qualità della decompilazione x86 è molto più bassa della qualità della decompilazione jvm o msil. –