Desassemblador

De Viquipèdia
Dreceres ràpides: navegació, cerca

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.

Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]

Desassembladors[modifica | modifica el codi]

  • BORG Disassembler with source code
  • RosAsm - 32 bit Assembler (The Bottom Up Assembler which is free and GPLed). Although this tool is basically an assembler, it also contains a very powerful (though automated) disassembler that is able to rebuild a huge variety of small applications. Support for disassembly of larger applications is under development.
  • Sourcer - A disassembler based on definition files.
  • The Bastard Disassembler - Linux disassembler. Doesn't have a usable front-end yet, but it does have an interactive command-line mode.
  • The Libasm from the ELF shell (elfsh) comes with advanced symbol resolving features
  • Kopi Project
  • DASMx - A freeware disassembler for a range of common (mostly 8-bit) microprocessors. Multi-pass operation together with code threading to help distinguish code from data.
  • PVDasm - Proview (PVDasm) is an online free interactive disassembler, Multi-Cpu (x86/Chip8) Disassembler. with features such as: PE-Editor, Process Manager and Dumper, Plugin SDK, MASM Source Code Generator, MAP File analysis, Hex Editor, Function Param Recognition and more.
  • HT Editor - Binary editor for Linux and Windows console.
  • PE Explorer Disassembler - a win32 PE file disassembler designed to reconstruct the assembly language source code of target binary win32 PE (Portable Executable) files such as .EXE, .DLL, Device Drivers (.SYS), OCX Controls, and Borland Libraries (.dpl & .bpl).
  • Udis86 Udis86 is an easy-to-use minimalistic disassembler library for the x86 and x86-64 (AMD64) range of instruction set architectures, designed to aid software development projects that entail binary code analysis.
  • diStorm64 diStorm is an open source highly optimized stream disassembler library for 80x86 and AMD64.
  • PostSharp - Disassembles .NET modules to an object model, lets you modify it and assembles it back.
  • OllyDbg - Free, small (only one megabyte) and very complete disassembler/debugger for Win32 applications.
  • ChARMeD Disassembler - A freeware Windows Mobile, Pocket PC and Windows CE executable disassembler and assembler for CPUs using the ARM instruction set. There is a Windows desktop version and a Windows Mobile/Pocket PC version.
  • Win32 Program disassembler - Open source disassembler for exes and dlls (i.e. PE) written by Professor Sang Cho.
  • BIEW - BIEW is Binary vIEW project. Highlights AVR/Java/Athlon64/Pentium 4/ disassemblers.