systemadmin.es » Programación » Ver la salida de objdump con la sintaxis de Intel

Ver la salida de objdump con la sintaxis de Intel

Mediante objdump podemos obtener el desensamblado de ejectables, pero por defecto lo obtendremos con la sintaxis de AT&T. Esta sintaxis es la que usa el GAS (GNU Assembler) por defecto. Vamos a ver como obtener el desensamblado con la sintaxis de Intel, por defecto es la que usa el NASM.

La sintaxis de AT&T tiene el siguiente aspecto:

$ objdump -d a.out
(...)
080483c4 <main>:
 80483c4:	55                   	push   %ebp
 80483c5:	89 e5                	mov    %esp,%ebp
 80483c7:	83 e4 f0             	and    $0xfffffff0,%esp
 80483ca:	83 ec 10             	sub    $0x10,%esp
 80483cd:	b8 d0 84 04 08       	mov    $0x80484d0,%eax
 80483d2:	c7 44 24 04 02 00 00 	movl   $0x2,0x4(%esp)
 80483d9:	00
 80483da:	89 04 24             	mov    %eax,(%esp)
 80483dd:	e8 12 ff ff ff       	call   80482f4 <printf@plt>
 80483e2:	b8 00 00 00 00       	mov    $0x0,%eax
 80483e7:	c9                   	leave
 80483e8:	c3                   	ret
 80483e9:	90                   	nop
 80483ea:	90                   	nop
 80483eb:	90                   	nop
 80483ec:	90                   	nop
 80483ed:	90                   	nop
 80483ee:	90                   	nop
 80483ef:	90                   	nop
(...)

Independientemente de los simbolos en los inmediatos y los registros, la característica más molesta es que el orden esta al revés que la sintaxis de Intel. Mediante –disassembler-options intel podemos obtener la misma salida pero con esta sintaxis:

$ objdump --disassembler-options intel -d a.out
(...)
080483c4 <main>:
 80483c4:	55                   	push   ebp
 80483c5:	89 e5                	mov    ebp,esp
 80483c7:	83 e4 f0             	and    esp,0xfffffff0
 80483ca:	83 ec 10             	sub    esp,0x10
 80483cd:	b8 d0 84 04 08       	mov    eax,0x80484d0
 80483d2:	c7 44 24 04 02 00 00 	mov    DWORD PTR [esp+0x4],0x2
 80483d9:	00
 80483da:	89 04 24             	mov    DWORD PTR [esp],eax
 80483dd:	e8 12 ff ff ff       	call   80482f4 <printf@plt>
 80483e2:	b8 00 00 00 00       	mov    eax,0x0
 80483e7:	c9                   	leave
 80483e8:	c3                   	ret
 80483e9:	90                   	nop
 80483ea:	90                   	nop
 80483eb:	90                   	nop
 80483ec:	90                   	nop
 80483ed:	90                   	nop
 80483ee:	90                   	nop
 80483ef:	90                   	nop
(...)

Relacionados

Imprimir Imprimir

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>