b'\n_START_ARTICLE_\nDesensamblador\n_START_PARAGRAPH_\nUn desensamblador o disassembler ([\xcb\x8cd\xc9\xaas\xc9\x99\xcb\x88s\xc9\x9bmbl\xc9\x99(r)]) es un programa de computador que traduce el lenguaje de m\xc3\xa1quina a lenguaje ensamblador, la operaci\xc3\xb3n inversa de la que hace el ensamblador. Un desensamblador difiere de un decompilador, en que \xc3\xa9ste 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 \xc3\xa9ste sea principalmente una herramienta de ingenier\xc3\xada inversa._NEWLINE_El c\xc3\xb3digo fuente en lenguaje ensamblador generalmente permite el uso de constantes y comentarios del programador. Estos son generalmente eliminados, por el ensamblador, del c\xc3\xb3digo ensamblado a c\xc3\xb3digo de m\xc3\xa1quina. De esta manera, un desensamblador operando sobre el c\xc3\xb3digo de m\xc3\xa1quina, producir\xc3\xada el desensamblado careciendo de estas constantes y comentarios; la salida desensamblada se vuelve m\xc3\xa1s dif\xc3\xadcil de ser interpretada por un humano que el c\xc3\xb3digo fuente con comentarios original. Algunos desensambladores hacen uso de la informaci\xc3\xb3n de depuraci\xc3\xb3n simb\xc3\xb3lica presente en los archivos objeto tales como el ELF. En una sesi\xc3\xb3n interactiva, el Interactive Disassembler permite al usuario humano colocar s\xc3\xadmbolos mnem\xc3\xb3nicos para valores o regiones de c\xc3\xb3digo: la intuici\xc3\xb3n humana aplicada al proceso de desensamblado a menudo va en paralelo con la creatividad humana en el proceso de la escritura del c\xc3\xb3digo._NEWLINE_El desensamblado no es una ciencia exacta: En las plataformas CISC con instrucciones de ancho variable, o en presencia de c\xc3\xb3digo automodificable, es posible para un simple programa tener dos o m\xc3\xa1s desensamblados razonables. Determinar qu\xc3\xa9 instrucciones ser\xc3\xadan encontradas realmente durante una ejecuci\xc3\xb3n del programa reduce al problema de parada probado no solucionable._NEWLINE_El programa desensamblador a utilizar, por trabajar con lenguaje m\xc3\xa1quina y ensamblador, depende exclusivamente del microprocesador que estamos usando (para que pueda reconocer las instrucciones del c\xc3\xb3digo binario), de la arquitectura de la m\xc3\xa1quina y del sistema operativo en uso (no es lo mismo Microsoft Windows que GNU/Linux).\n_START_SECTION_\n\xc2\xbfQu\xc3\xa9 hace un desensamblador?\n_START_PARAGRAPH_\nEl desensamblador transforma el c\xc3\xb3digo binario en instrucciones b\xc3\xa1sicas 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\xc3\xb3digo binario ya que la m\xc3\xa1quina no usa nombres), as\xc3\xad que suele inventar nombres como VAR_0001, VAR_0002, etc._NEWLINE_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._NEWLINE_Las funciones externas dependen del sistema en el que se ejecute el programa a desensamblar:_NEWLINE_Bajo sistemas como DOS, la mayor\xc3\xada de las veces puede indicar las funciones que se llaman (llamar a una funci\xc3\xb3n requiere normalmente una llamada a una interrupci\xc3\xb3n con valores espec\xc3\xadficos en los registros, que deben ser consultados si no son provistos por el programa desensamblador). Por ejemplo, para imprimir un texto en pantalla:_NEWLINE_  mov ax, 0009_NEWLINE_  mov dx, offset TEXTO_NEWLINE_  int 21h_NEWLINE_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\xc3\xada de las funciones provistas por el sistema operativo y llamados externos en las bibliotecas de enlace din\xc3\xa1mico. Por ejemplo, las funciones CreateFile o ReadFile.\n_START_SECTION_\nUso de los desensambladores\n_START_PARAGRAPH_\nLos desensambladores son ampliamente utilizados para crackear programas y para realizar ingenier\xc3\xada inversa. Tambi\xc3\xa9n son utilizados por desarrolladores de software, investigadores o estudiantes.'