Necesito convertir el código IL a C#. Tengo un ensamblaje y estoy leyendo este ensamblaje. Puedo obtener MethodBody de MethodInfo y la MethodBody tiene un método GetILAsByteArraY() que devuelve una matriz de bytes ahora quiero convertir este IL a código C#. Por favor, ayúdenme a resolver esto.Convirtiendo código IL a C#
Respuesta
No reinventar la rueda; use el .NET Reflector de Lutz Roeder.
Ya no es Lutz '. – Will
Creo que es obvio que está intentando crear otra rueda como la de .NET Reflector y quiere saber cómo está hecha. Lutz no debería ser necesariamente el único hombre en el mundo que sabe cómo hacerlo. –
@HasanKhan dada la elección de respuesta de OP, está muy contento con Lutz siendo el único hombre :) – nawfal
Veamos si logro conseguirlo primero: .NET Reflector! Esto realmente debería ser una pregunta frecuente ...
¿No puedes hacer esto con Reflector?
Puede cargar un ensamblado y visualizarla como VB.net/C#/IL ...
Usted sólo debe utilizar .NET Reflector si tiene la asamblea. Pruebe también el file gen addon.
No hay herramienta en el BCL que lo haga; sin embargo, existe una gran herramienta llamada Reflector, para la cual puede escribir sus propios complementos. Entonces podría usarlo de manera probal para obtener los datos que desea.
Reflector hace esto. Tal vez podrías usar Reflector contra Reflector y aprender cómo maneja el problema.
También podría decir por qué desea hacer esto: puede haber una mejor solución para su problema general.
Los internos de los reflectores se ofuscaron al usar elementos no imprimibles (al menos Lutz lo hizo). Mientras que sí podría reflexionar sobre sí mismo, una mejor pregunta sería si realmente vale la pena que ... – JoshBerke
Sí, eso es lo que sospechaba. Es por eso que le pregunté por qué quiere hacerlo. –
Tal vez deberías probar Dis # si no quieres reinventar la rueda ... Es casi la mejor herramienta para convertir el código NetDASM tiene una herramienta que te permite convertir C# a IL. tal vez deberías echarle un vistazo a eso.
reinventar la rueda sin duda una mejor manera de aprender! tendrás que crear tu propia clase que convierta iL en C#. Esto requiere el conocimiento del lenguaje intermedio.
que supone que ya ha convertido la matriz de bytes con las instrucciones IL igual que vemos en ildasm.exe, Usando Reflection.Emit.OpCodes, OpCode.OperandType, BitConvertor.ReadByte(), etc. BitConvertor.ReadInt32
Si desea hacerlo usted mismo, usted podría comenzar desde el viejo Cecil.Decompiler y mejorarlo, consulte the source code y an old post of Jb. Evain announcing the project (enlace abajo).
Ambos enlaces están rotos. –
Se arregló la primera, no se puede hacer nada con respecto a la segunda, ya que no sé por qué puso su blog fuera de línea incluso si todavía lo referencia en Twitter. –
Para los motores de búsqueda, el reflector no es libre de ningún modo. Pero una nueva herramienta FREE más reciente y mejor se ofrece desde telerik llamado JustDecompile. Acabo de descargar esto y es tan increíble y solo es beta. Aparentemente Telerik promete gratis para siempre.
El reflector Lutz Roeder se adquirió y ya no está disponible para su descarga gratuita.
Ahora hay una herramienta gratuita (una vez más) llamada ILSpy. He encontrado que es muy bueno, y no solo generará el código C# de IL sino que también creará un proyecto .csproj
si descompila un ensamblado de DLL completo.
- 1. C# convirtiendo pdf a html
- 2. declaración fijo en C# y logró puntero en código IL
- 3. Convirtiendo SVG a PNG usando C#
- 4. Depurador de código de nivel de IL
- 5. Convirtiendo Ruby en C#
- 6. Convirtiendo bool a texto en C++
- 7. convirtiendo decimal a int en C#
- 8. Preguntas sobre IL codificado a mano basado en código simple desensamblado de C#
- 9. Convirtiendo system.windows.media.brush al código de color hexadecimal
- 10. Convirtiendo DateTime.MinValue a DateTimeOffset
- 11. convirtiendo cadena de estilo c a cadena de estilo C++
- 12. diferencias IL generado para VB.NET y C#
- 13. ¿Por qué es tan fácil descompilar el código .NET IL?
- 14. convirtiendo el código de MATLAB en Fortran
- 15. Convirtiendo EBNF a BNF
- 16. Convirtiendo QVariant a QStringList
- 17. Convirtiendo .jks a p12
- 18. Una herramienta para facilitar la inspección del código IL
- 19. Convirtiendo matriz de bytes a cadena y viceversa en C#
- 20. Convirtiendo la interfaz de objeto COM de C a Delphi
- 21. PHP convirtiendo a boolean usando '!!'
- 22. Convirtiendo HEX NSString a NSData
- 23. ¿Por qué el código IL generado comienza con un Nop?
- 24. Convirtiendo CSV a la matriz
- 25. IL: ldfld vs ldflda
- 26. Convirtiendo un doble en int en C#
- 27. Convirtiendo CMTime a tiempo legible para humanos en Object-C
- 28. Convirtiendo cadena larga de binario a hex C#
- 29. Convirtiendo archivo de texto de ANSI a ASCII usando C#
- 30. Convirtiendo un byte a una cadena binaria en C#
¡Decisión unánime! –
¿Para qué necesita esto? Si describe su situación con más detalle, tal vez podamos sugerir más que .NET Reflector. –
@ Anton Probablemente sería mejor que no entendiéramos este hackeo. –