Disassembler: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pagina svuotata completamente
m Annullate le modifiche di 79.2.176.2 (discussione), riportata alla versione precedente di Pietrodn
Riga 1:
Un '''disassemblatore''' o '''disassembler''' è un [[Programma (informatica)|programma]] che traduce dal [[linguaggio macchina]] al [[linguaggio assembly]]. Esso effettua quindi l'operazione inversa di un [[assembler]]. Comunque, l'output di un disassembler (detto [[disassemblato]], o ''disassembly'')) è spesso fatto in modo da poter essere facilmente compreso dall'uomo piuttosto che per essere utilizzato come input per un assembler. Similmente, un [[decompilatore]] traduce il [[linguaggio macchina]] in un [[linguaggio ad alto livello]].
 
La maggior parte dei [[debugger]] includono un disassembler, come il programma [[objdump]] delle [[GNU Binutils]].
 
Generalmente, in un [[codice sorgente]] in linguaggio assembly vengono utilizzate le [[costante simbolica|costanti simboliche]] e i "commenti" del programmatore - annotazioni che sono ignorate dall'assembler ma servono a spiegare ad un altro programmatore cosa il programma fa e in che modo. Le costanti simboliche e i commenti vengono generalmente rimossi dall'assembler. La perdita di queste informazioni rende più difficile la comprensione del codice rispetto al codice sorgente originario. In effetti, uno strumento per il disassemblaggio completamente automatico non può raggiungere in genere risultati molto accurati, poiché il processo di disassemblaggio si riduce ad un famoso problema informatico noto come "[[problema della fermata]]" (per il quale è stato dimostrato che non esiste un [[algoritmo]] che lo risolva). Per questo motivo, i disassembler interattivi avranno sempre una resa migliore rispetto a quelli automatici consentendo all'uomo di utilizzare la sua intelligenza nel processo di disassemblaggio.
 
I disassembler sono tra gli strumenti più comunemente utilizzati per il [[reverse engineering]] del software.
 
Sono stati scritti molti disassembler. Alcuni esempi notevoli includono:
 
* [[RosASM]]- [[Assembler]] a 32 bit (rilasciato sotto [[GNU General Public License|licenza GPL]]). Nonostante sia essenzialmente un [[assembler]], contiene anche un disassembler molto potente (sebbene automatico) che è in grado di ricostruire una grande quantità di piccole applicazioni. Il supporto per applicazioni di maggiore dimensione è in via di sviluppo.
* [[Interactive Disassembler]] Un disassembler commerciale interattivo.
* [http://www.v-com.com/product/Sourcer_Products_Home.html Sourcer] - Un altro disassembler commerciale.
 
==Collegamenti esterni==
 
* {{en}}[http://www.program-transformation.org/Transform/DisAssembly Il disassembly su Wiki]
* {{en}}[http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/javap.html Un disassembler per file Java]
* {{en}}[http://www.dms.at/kopi/ Kopi Project]
* {{en}}[http://pvdasm.reverse-engineering.net/ PVDasm]
* {{en}}[http://bastard.sourceforge.net/libdisasm.html x86 Disassembler Library]
* {{en}}[http://biew.sourceforge.net BIEW]
* {{en}}[http://www.openrce.org/ OpenRCE: Various Disassembler Resources and Plug-ins]
* {{en}}[http://www.thefreecountry.com/programming/disassemblers.shtml The free country]
* {{en}}[http://www.programmersheaven.com/zone5/cat460/index.htm Programmer's heaven]
 
[[Categoria:Attività di sviluppo]]
 
[[bg:Дизасемблер]]
[[ca:Desassemblador]]
[[cs:Disassembler]]
[[de:Disassembler]]
[[en:Disassembler]]
[[es:Desensamblador]]
[[et:Disassembler]]
[[fr:Désassembleur]]
[[hu:Disassembler]]
[[ja:逆アセンブラ]]
[[nl:Disassembler]]
[[pl:Dezasembler]]
[[pt:Desmontador]]
[[ru:Дизассемблер]]
[[sv:Disassemblator]]
[[uk:Дизасемблер]]