Ho letto molti post sulla decompilazione (anche se nessuna esperienza) ma non ho capito perché tutti in generale hanno menzionato che è più facile decompilare C# rispetto a C++ eseguibile. Qualcuno potrebbe spiegare la differenza?Decompila C# vs C++
risposta
C# viene compilato in CIL, non direttamente in un codice nativo come un normale compilatore C++.
produce un .NET assembly, che contiene molto più di meta dati di un C++ eseguibile fa (attraverso il incorporato manifest) - questo è metadati sui tipi contenuti nel montaggio, che cosa fa riferimento e di più, rendendo molto più facile per decompilare di un eseguibile "normale".
Come indicato nei commenti, CIL è di per sé un linguaggio di livello superiore rispetto all'assemblaggio ed è un linguaggio orientato agli oggetti, che semplifica la comprensione e la decompilazione.
Come sidenote, .NET 'assembly' e' assembly language' sono completamente separati :-) – xanatos
IMO, la differenza più importante è che CIL è ancora orientato agli oggetti mentre il linguaggio macchina non lo è. –
Inoltre: praticamente l'intera struttura delle classi C# può essere riflessa, il che rende la decompilazione molto più semplice perché devi solo decompilare il CIL nella funzione corpi – x4rf41
È semplicemente. Il codice C# contiene le informazioni necessarie per il ripristino del codice sorgente, ma C/C++ non ce l'ha.
- 1. : C++ vs C#
- 2. C++ gestito (C++/CLI) vs C#/VB.NET
- 3. C/C++ Struct vs Class
- 4. Gestione file C vs C++
- 5. statico vs extern "C"/"C++"
- 6. Boo vs C# vs Python?
- 7. C vs C++ switch definizione della variabile vs dichiarazione
- 8. Elaborazione immagini OpenCV - C++ vs C vs Python
- 9. operatore ternario in C vs C++
- 10. nome parametro omesso, C++ vs C
- 11. C# Task.Run() vs. C++ std :: async()
- 12. C/C++ globale vs statico globale
- 13. GUI .NET - C# vs C++/CLI
- 14. DICOM C-GET vs C-MOVE
- 15. MonoTouch & C# VS Objective C per iPhone
- 16. UrlEncode - Javascript vs. C#
- 17. Immutable vs Mutable C#
- 18. C++ vs Python precisione
- 19. Powershell vs C#
- 20. estensione ctypes vs C
- 21. C# HasValue vs! = Null
- 22. c eguali # enum() vs ==
- 23. C# HttpWebRequest vs WebRequest
- 24. C# Debug vs Release
- 25. C# getter vs readonly
- 26. TerminateProcess vs Ctrl + C
- 27. C# Form.Close vs Form.Dispose
- 28. Javascript VS C#
- 29. C++ vs __attribute __ ((constructor))
- 30. C# campo vs. proprietà
Vedere anche le risposte a [questa domanda] (http://reverseengineering.stackexchange.com/q/311/60). –