¿Hay una buena utilidad de FOSS para convertir el código de máquina en ensamblador o incluso en C?

Si compro una pieza de software x86 de 32 bits o de 64 bits pero no recibo el código fuente, y necesito modificar el software, tendré que volver a convertir el código de la máquina en un lenguaje de alto nivel o en less código de ensamblaje

¿Hay una buena utilidad para pasar de código de máquina a C?

Supongo que intentaría identificar si el progtwig se compiló con un comstackdor de C en lugar de C ++ o Objective C o cualquier otra cosa.

Gracias.

Volver del código de máquina al idioma de origen se llama descompilation . El desassembly (pasando del código de máquina al lenguaje ensamblador) se puede hacer con objdump -d ; objdump es parte del set de herramientas de desarrollo binutils estándar. Mientras que un descomstackdor puede ser una herramienta útil en el process, descomstackr el código con la intención de modificarlo y recomstackrlo rara vez es una forma productiva de modificar el comportamiento de un progtwig. Pasará mucho time recuperando el código fuente utilizable, y ese código fuente no estará en ninguna forma mantenible.

El primer paso para comprender cómo funciona un progtwig son las herramientas de debugging. Use herramientas tales como strace y ltrace para ver qué llamadas al sistema y llamadas a bibliotecas hace el progtwig. Use un depurador como Gdb para seguir las instrucciones del progtwig.

Si tiene mucha suerte, el comportamiento que busca se puede lograr con un file de configuration o una variable de entorno. El siguiente paso es conectar el progtwig y replace algunas funciones por su propia versión, utilizando LD_PRELOAD para vincular una biblioteca que define su propia versión de estas funciones .

La descompilation suele ser útil para comprender los algorithms utilizados por un progtwig, por ejemplo, para escribir otro progtwig con un protocolo de networking o formatting de file compatible. A menudo no es una herramienta muy útil cuando su objective es modificar el comportamiento del progtwig.

Wow, algún proyecto! Pero está bien, algunos juguetes con los que jugar:

(Use todo con un file binary como primer argumento.)

bits:

 xxd -b # xxd for hexdump (?): `-b` is `-bits` 

octal:

 od # octal dump 

hexadecimal:

 hexdump # these two share the hexdump(1) man page hd # symbolic link to hexdump od -t x1 # `-t` for type, `x1` for hexadecimal with 1 byte per integer xxd 

instrumentos de string:

 strings 

codigo de maquina:

 objdump -D # object dump: `-D` is `--disassemble-all` 

Y, por último pero no less importante, file

Asegúrate de ver esta pregunta.