Disassembler: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
DorganBot (discussione | contributi)
m robot Aggiungo: bg:Дизасемблер
fix
 
(27 versioni intermedie di 18 utenti non mostrate)
Riga 1:
Un '''disassemblatore''' o '''disassembler''' è un [[Programma (informatica)|programma]] che traduce dal [[linguaggio macchina]] al [[linguaggio assembly]]. Esso effettua quindiEffettua 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]].
 
== Descrizione ==
La maggior parte dei [[debugger]] includono un disassembler, come il programma [[objdump]] delle [[GNU Binutils]].
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]].
 
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. {{Sf|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.
 
== Programmi famosi ==
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]] (rilasciatodisponibile 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.
 
* [[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.
* [https://web.archive.org/web/20050804080954/http://www.v-com.com/product/Sourcer_Products_Home.html Sourcer] - Un altro disassembler commerciale.
 
== Voci correlate ==
* [[Assembler]]
* [[Debugger]]
 
==Collegamenti esterni==
* {{cita web|1=http://www.program-transformation.org/Transform/DisAssembly|2=Il disassembly su Wiki|lingua=en|accesso=9 luglio 2005|urlarchivio=https://www.webcitation.org/617hwkBUM?url=http://www.program-transformation.org/Transform/DisAssembly|dataarchivio=22 agosto 2011|urlmorto=sì}}
* {{en}}[cita web|http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/javap.html |Un disassembler per file Java]|lingua=en}}
* {{cita web|1=http://www.dms.at/kopi/|2=Kopi Project|lingua=en|accesso=9 luglio 2005|urlarchivio=https://web.archive.org/web/20050603074654/http://www.dms.at/kopi/|dataarchivio=3 giugno 2005|urlmorto=sì}}
* {{cita web|1=http://pvdasm.reverse-engineering.net/|2=PVDasm|lingua=en|accesso=9 luglio 2005|urlarchivio=https://web.archive.org/web/20070501135754/http://pvdasm.reverse-engineering.net/|dataarchivio=1º maggio 2007|urlmorto=sì}}
* {{en}}[cita web|http://bastard.sourceforge.net/libdisasm.html |x86 Disassembler Library]|lingua=en}}
* {{cita web|1=http://biew.sourceforge.net|2=BIEW|lingua=en|accesso=28 agosto 2018|urlarchivio=https://web.archive.org/web/20160702180758/http://biew.sourceforge.net/|dataarchivio=2 luglio 2016|urlmorto=sì}}
* {{cita web|1=http://www.openrce.org/|2=OpenRCE: Various Disassembler Resources and Plug-ins|lingua=en|accesso=29 aprile 2007|dataarchivio=28 agosto 2008|urlarchivio=https://web.archive.org/web/20080828152956/http://openrce.org/|urlmorto=sì}}
* {{en}}[cita web|http://www.thefreecountry.com/programming/disassemblers.shtml |The free country]|lingua=en}}
* {{en}}[cita web|1=http://www.programmersheaven.com/zone5/cat460/index.htm |2=Programmer's heaven]|lingua=en|urlmorto=sì}}
 
{{Controllo di autorità}}
* {{en}}[http://www.program-transformation.org/Transform/DisAssembly Il disassembly su Wiki]
{{Portale|informatica}}
* {{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]]
 
[[Categoria:AttivitàSviluppo di svilupposoftware]]
[[bg:Дизасемблер]]
[[ca:Desassemblador]]
[[cs:Disassembler]]
[[de:Disassembler]]
[[en:Disassembler]]
[[es:Desensamblador]]
[[et:Disassembler]]
[[fr:Désassembleur]]
[[hu:Disassembler]]
[[ja:逆アセンブラ]]
[[nl:Disassembler]]
[[pl:Disasembler]]
[[pt:Desmontador]]
[[ru:Дизассемблер]]
[[sv:Disassemblator]]
[[uk:Дизасемблер]]