portable online net ilspy compiler-construction go decompiling

compiler construction - online - Descompilación de un programa compilado con Go



decompiler vb (2)

He creado un programa ejecutable simple con Go .

He compilado el código en un programa binario estático.

Quiero descompilar el archivo binario de salida y obtener el código fuente Go.

¿Es esto posible o no?


No existe una herramienta para hacer eso y, como los programas Go se compilan en código máquina, no contienen suficiente información para traducirlos nuevamente al código Go. Sin embargo, las técnicas de desmontaje estándar aún son posibles.


No hay una herramienta conocida que actualmente se descompile en fuentes Go.

Go es un compilador de lenguaje nativo, a diferencia de Java e idiomas similares, que se basan en un cargador de clase, utiliza un enlazador para producir sus ejecutables. Por lo tanto, reconstruir el árbol de llamadas es, como en C y en lenguajes similares, mucho más difícil.

La información de depuración, como los símbolos, normalmente se eliminan del ejecutable de Go.

Existe muy poco incluso en términos de depuración simbólica del código de Golang.

GDB por ejemplo es AFAIK en su estado actual no alineado con la arquitectura Go y prácticamente no es funcional en términos de depuración simbólica Golang. Go GDB ha sido lanzado IntelliJ ide por esta misma razón.

Existen esfuerzos experimentales para tratar de recuperar la funcionalidad de GDB por parte de algunos usuarios, pero estos requieren que las fuentes de Go hayan sido compiladas con disposiciones no estándar especiales para soportar la depuración. por ejemplo: http://blog.securitymouse.com/2014/10/golang-debugging-turning-pennies-into-gs.html Otros depuradores simbólicos para Go también necesitan la inserción de código no estándar para soportar el depurador, por ej. Hopwatch

Por lo tanto, si necesita aplicar ingeniería inversa a un programa Go, estará mejor con las herramientas tradicionales de ingeniería inversa de nivel inferior, como IDA PRO. Esto es definitivamente posible, pero a lo sumo obtendrá algo parecido al pseudocódigo C, o ASM, nunca vaya a las fuentes.

Algunas características del lenguaje no existen en otros idiomas, por ejemplo, los canales, y requieren un estudio y un enfoque no trivial. Por ejemplo: http://jolmos.blogspot.nl/2014/09/inbincible-writeup-golang-binary.html