Aquest article o secció necessita millorar una traducció deficient. |
Aquest article o secció no cita les fonts o necessita més referències per a la seva verificabilitat. |
Un desassemblador és un programa d'ordinador que tradueix llenguatge màquina a llenguatge d'assemblador, realitzant l'operació inversa d'un assemblador. Un desassemblador es diferencia d'un decompilador en el fet que aquest últim transforma el llenguatge màquina en un llenguatge d'alt nivell en comptes de fer-ho en llenguatge d'assemblador. La sortida d'un desassemblador és sovint formatada per a facilitar la lectura i comprensió humanes en comptes de transformar-la en l'entrada ideal per a un assemblador. Això converteix els desassembladors en una de les principals eines d'enginyeria inversa.
El codi font d'assemblador permet normalment l'ús de constants simbòliques i comentaris del programador. Aquests últims són sovint esborrats per l'assemblador en el codi màquina final. Si és així, un desassemblador operant al codi màquina produiria una sortida sense constants ni comentaris, i esdevindria molt més difícil d'interpretar per a un humà que el codi original comentat. Alguns desassembladors poden inferir noms i comentaris útils; de totes maneres, els desassembladors interactius tenen més èxit desassemblant programes que els desassembladors totalment automatitzats, ja que el raonament humà aplicat al procés de desassemblatge és similar a la creativitat humana a l'hora d'escriure el codi original.
No pot existir un desassemblador completament automatitzat que sempre produeixi codi font correcte perquè el procés de desassemblament es redueix al famós problema d'aturada, impossible de solucionar.