SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: clicklose en Sábado 12 de Febrero de 2011, 01:53

Título: Traducción de dos sentencias NASM a GAS
Publicado por: clicklose en Sábado 12 de Febrero de 2011, 01:53
Alguien podrías decirme como traducir este código (en sintaxis de NASM) a sintaxis de GAS?
mov dword [ebp - 4], eax      
lea ebx, [ebp - 256]

Yo lo escribí así:

movl %eax , -4(%ebp)
leal  - 256(%ebp) , %ebx

Estaría bien?

Saludos
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: m0skit0 en Sábado 12 de Febrero de 2011, 12:42
Bueno, NASM acepta tanto sintaxis Intel como AT&T.

A primera vista, está bien para GAS. ¿Te da algún error/problema?
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: clicklose en Sábado 12 de Febrero de 2011, 23:30
En realidad forma parte de un código bastante largo, y quería esperar a traducirlo completamente antes de compilar, tengo otras dudas como por ejemplo lineas de este estilo:

mov dword [ebp - 76], 'Hi, '
mov dword [ebp - 72], 'this'
mov dword [ebp - 68], ' is '
mov dword [ebp - 64], 'a pr'
mov dword [ebp - 60], 'oof '

que no se como traducirlas o también
mov cx, [ebp - 20]
mov edx, End - main
Con End y main como etiquetas

La 1° me deja la dudas por el tamaño de los operadores
Sería movw -20(%ebp) , %cx ?
Por las primera lineas y la última no tengo idea :S
Gracias por la ayuda
Saludos
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: m0skit0 en Domingo 13 de Febrero de 2011, 15:06
Código: ASM
  1. mov dword [ebp - 76], 'Hi, '
  2. mov dword [ebp - 72], 'this'
  3. mov dword [ebp - 68], ' is '
  4. mov dword [ebp - 64], 'a pr'
  5. mov dword [ebp - 60], 'oof '
  6.  
Buf, esto me parece una chorrada inútil, no sé si GAS aceptará eso, pero weno, siempre puedes pasarlo a hexadecimal:

Código: ASM
  1. movl 0x48692C20, -76(%ebp)
  2.  
(no recuerdo cómo se definían los números hexadecimales en GAS  :P )

Cita de: "clicklose"
La 1° me deja la dudas por el tamaño de los operadores
Sería movw -20(%ebp) , %cx ?
Sip

Código: ASM
  1. mov edx, End - main
  2.  
Hm no sé si GAS aceptará esto, pero puedes cargar las direcciones en registros (LEA) y computar dicha resta.
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: clicklose en Domingo 13 de Febrero de 2011, 18:15
Las lineas en la que carga texto las necesito hacer así para no usar sección .data, había pensado la de los hexadecimales (te faltó el "$" antes del número), es una pena que GAS no tenga una forma más cómoda como la de NASM
Voy a probar el de las etiquetas, para la diferencia

Código: ASM
  1. leal End , %edi
  2. leal main , %esi
  3. subl %esi , %edi
  4.  
estaría bien decís?
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: m0skit0 en Lunes 14 de Febrero de 2011, 01:02
Cita de: "clicklose"
para no usar sección .data
¿Por alguna razón en concreto?

Cita de: "clicklose"
había pensado la de los hexadecimales (te faltó el "$" antes del número)
Ups... es que GAS no es mi fuerte  :P

Cita de: "clicklose"
estaría bien decís?
Supongo que no debería dar ningún problema.
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: clicklose en Lunes 14 de Febrero de 2011, 08:38
Cita de: "m0skit0"
¿Por alguna razón en concreto?

Es parte de un trabajo práctico para una materia. Tengo que escribir un programa con temática libre y elegí hacer un virus que infecte archivos ELF, nada dañino, sólo algo que se comporte como un virus como una "prueba del concepto". Como debo infectar al binario con el virus, no puedo usar data pués copiaré únicamente el text segment del pequeño
Me falta poca información para poder escribir un virus desde cero, puedo abrir otro hilo sobre el tema?
Muchas gracias por la ayuda, fue de gran utilidad.

Saludos
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: m0skit0 en Lunes 14 de Febrero de 2011, 13:52
Cita de: "clicklose"
Como debo infectar al binario con el virus, no puedo usar data pués copiaré únicamente el text segment del pequeño
Realmente no es una razón. De hecho es posible que de esta forma tu binario ocupe más que si usas una sección .data, dado que al usar inmediatos en las instrucciones, hagan que la instrucción sea un poco más grande. Ten en cuenta que la sección de datos va pegada al segmento de texto, generalmente al final (esto se le puede indicar al ensamblador). Realmente no hay pérdida de memoria. Además podrías incluír el tamaño del segmento directamente en dicha sección sin tener que operarlo.

Saludos y suerte con la práctica, realmente interesante ^_^
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: clicklose en Lunes 14 de Febrero de 2011, 20:48
Cita de: "m0skit0"
Cita de: "clicklose"
Como debo infectar al binario con el virus, no puedo usar data pués copiaré únicamente el text segment del pequeño
Realmente no es una razón. De hecho es posible que de esta forma tu binario ocupe más que si usas una sección .data, dado que al usar inmediatos en las instrucciones, hagan que la instrucción sea un poco más grande. Ten en cuenta que la sección de datos va pegada al segmento de texto, generalmente al final (esto se le puede indicar al ensamblador). Realmente no hay pérdida de memoria. Además podrías incluír el tamaño del segmento directamente en dicha sección sin tener que operarlo.


Si, es verdad que puedo introducir el .data pero es un lío bastante grande :P.
Por casualidad sabés cómo funciona un program header que tiene tipo 1 (en un ELF)
Digo porque es el único detalle que me falta entender :S

Cita de: "m0skit0"
Saludos y suerte con la práctica, realmente interesante ^_^

Gracias, es realmente muy interesante
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: m0skit0 en Lunes 14 de Febrero de 2011, 22:43
Cita de: "clicklose"
Por casualidad sabés cómo funciona un program header que tiene tipo 1 (en un ELF)
Esto es off-topic, pero weno... ¿Te refieres al campo p_type? Si es 1 es  PT_LOAD. Esto significa que el segmento debe ser cargado en memoria. Te aconsejo este documento (http://www.skyfree.org/linux/references/ELF_Format.pdf).

Saludos.
Título: Re: Traducción de dos sentencias NASM a GAS
Publicado por: clicklose en Lunes 14 de Febrero de 2011, 23:10
Perdón por el off-topic, abriré otro tema.

Saludos

PD: He leído ese documento y me deja una duda que pregunto en el otro tema