Вы находитесь на странице: 1из 3

Desensamblador

Un desensamblador es un programa de computador que traduce el lenguaje de máquina a lenguaje ensamblador, la operación
inversa de la que hace el ensamblador. Un desensamblador difiere de un decompilador, en que éste tiene como objetivo un lenguaje
de alto nivel en vez de al lenguaje ensamblador. la salida de un desensamblador, el desensamblado, es a menudo formateada para la
legibilidad humana en vez de ser adecuada para la entrada a un ensamblador, haciendo que éste sea principalmente una herramienta
de ingeniería inversa.

El código fuente en lenguaje ensamblador generalmente permite el uso de constantes y comentarios del programador. Estos son
generalmente removidos, por el ensamblador, del código ensamblado a código de máquina. De esta manera, un desensamblador
operando sobre el código de máquina, produciría el desensamblado careciendo de estas constantes y comentarios; la salida
desensamblada se vuelve más difícil de ser interpretada por un humano que el código fuente con comentarios original. Algunos
desensambladores hacen uso de la información de depuración simbólica presente en los archivos objeto tales como el ELF. En una
sesión interactiva, el Interactive Disassembler permite al usuario humano colocar símbolos mnemónicos para valores o regiones de
código: la intuición humana aplicada al proceso de desensamblado a menudo va en paralelo con la creatividad humana en el proceso
de la escritura del código.

El desensamblado no es una ciencia exacta: En las plataformas CISC con instrucciones de ancho variable, o en presencia de código
automodificable, es posible para un simple programa tener dos o más desensamblados razonables. Determinar qué instrucciones
serían encontradas realmente durante una ejecución del programareduce al problema de parada probado no solucionable.

El programa desensamblador a utilizar, por trabajar con lenguaje máquina y ensamblador, depende exclusivamente del
microprocesador que estamos usando (para que pueda reconocer las instrucciones del código binario), de la arquitectura de la
máquina y del sistema operativo en uso (no es lo mismoMicrosoft Windows que GNU/Linux).

Índice
¿Qué hace un desensamblador?
¿Qué no hace un desensamblador?
Uso de los desensambladores
Programas desensambladores
Véase también
Referencias
Enlaces externos

¿Qué hace un desensamblador?


El desensamblador transforma el código binario en instrucciones básicas del PC en la que se ejecuta, el programa no es capaz de
distinguir si dichas instrucciones provienen de un "if", de un "for" o de un "while". Tampoco conoce los nombres de las variables (no
se incluyen en el código binario ya que la máquina no usa nombres), así que suele inventar nombres como VAR_0001, VAR_0002,
etc.

En cuanto a las funciones, algo parecido pasa con las funciones internas del programa, se suelen llamar CALL_0001 o JMP_0001, o
similares, dependiendo de si son direcciones de llamadas con o sin retorno, respectivamente.

Las funciones externas dependen del sistema en el que se ejecute el programa a desensamblar:
Bajo sistemas como DOS, la mayoría de las veces puede indicar las funciones que se llaman (llamar a una función requiere
normalmente una llamada a una interrupción con valores específicos en los registros, que deben ser consultados si no son provistos
por el programa desensamblador). Por ejemplo, para imprimir un texto en pantalla:

mov ax, 0009


mov dx, offset TEXTO
int 21h

En cambio bajo sistemas operativos modernos como Windows, las funciones se llaman por nombres, y esto suele ser bastante
autoexplicativo. Esto resulta cierto para la mayoría de las funciones provistas por el sistema operativo y llamados externos en las
bibliotecas de enlace dinámico. Por ejemplo, las funciones CreateFile o ReadFile.

¿Qué no hace un desensamblador?


Un desensamblador no puede:

Rescatar los nombres de las variables o las funciones nombradas por el programador
.
Recuperar los comentarios.
Rescatar código fuente perdido.
Existe una salvedad a todo esto y es cuando el que compiló el programa ha habilitado una opción, que es incluir la información de
depuración en el programa (usualmente se trata de programas en fase de desarrollo y no de programas finales).

Uso de los desensambladores


Los desensambladores son ampliamente utilizados paracrackear programas y para realizar ingeniería inversa. También son utilizados
por desarrolladores de software, investigadores o estudiantes.

Programas desensambladores
Cualquier depurador interactivo incluirá una alguna forma de ver el desensamblado del programa que está siendo depurado. A
menudo, la misma herramienta de desensamblado será empaquetada como un desensamblador independiente distribuido junto con el
depurador. Por ejemplo, el objdump, parte del GNU Binutils, está relacionado con el depurador interactivogdb.

Interactive Disassembler(IDA)
ILDASM es una herramienta contenida en el SDK del .NET Framework. Puede ser usado para desensamblar los
archivos PE conteniento códigoCommon Intermediate Language
OllyDbg es un depurador analizador ensamblador de 32 bits
SIMON, un probador/depurador/animador con desensamblador integrado para el Ensamblador, COBOL y PL/1
Texe es un desensambladorde 32 bits y un analizador de archivos PE de Windows
libre.
unPIC es un desensamblador para losmicrocontroladores PIC

Véase también
Lenguaje ensamblador
Lenguaje ensamblador x86

Anexo:Listados de instrucciones x86


Compilador
Ensamblador
Decompilador
Depurador
Interpretador
Emulador BOCHS
Ingeniería inversa
Gráfico de control de flujo
Análisis de flujo de datos

Referencias
L. Vinciguerra, L. Wills, N. Kejriwal, P. Martino, and R. Vinciguerra, "An Experimentation Framework for Evaluating
Disassembly and Decompilation Tools for C++ and Java", Proc. of 10th Working Conference on Reverse
Engineering (WCRE) 2003.
B. Schwarz, S. Debray, and G. Andrews, "Disassembly of Executable Code Revisited", Proc. of 9th Working
Conference on Reverse Engineering (WCRE), pp. 45–54, 2002.

Enlaces externos
Lista de desensambladores, transformation Wiki (en inglés)
Lista de desensambladores (sólo gratuitos), The free country (en inglés)

Obtenido de «https://es.wikipedia.org/w/index.php?title=Desensamblador&oldid=94644081
»

Esta página se editó por última vez el 29 oct 2016 a las 15:33.

El texto está disponible bajo laLicencia Creative Commons Atribución Compartir Igual 3.0 ; pueden aplicarse cláusulas
adicionales. Al usar este sitio, usted acepta nuestrostérminos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de laFundación Wikimedia, Inc., una organización sin ánimo de lucro.