elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  [?] call que no llama a quien debería (AT&T)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [?] call que no llama a quien debería (AT&T)  (Leído 4,037 veces)
Nork

Desconectado Desconectado

Mensajes: 196



Ver Perfil
[?] call que no llama a quien debería (AT&T)
« en: 26 Mayo 2009, 19:43 pm »

Hola, aquí estoy otra vez con el jodido ASM y la sintaxis AT&T :P El problema ahora es que el call llama a una zona de memoria que se la saca de la manga (se la inventa), el trocito de código es éste:

Código
  1. movl %0, %%eax"::"g"(tem)
  2. movl %%eax,%0"::"g"(buf)
  3. lcall *(%eax)"

tem es una variable que contiene la dirección de un buffer que posteriormente tengo que ejecutar, entonces le paso esa dirección a eax luego para asegurarme que eax contenía tal dirección lo comprobé pasando el valor que tenía a la variable buf y hasta aquí todo correcto, la memoria pues está en eax correctamente (supongamos que la memoria es 0x3d00000)... luego PORQUE cuando hago un call *(%eax) me salta con un error de memoria diciéndome que:
Citar
"La instrucción en "0x00405458" hace referencia a la memoria en "0xffffffff". La memoria no se puede "read".

0x00405458?? Pero si tenía que ser 0x3d00000  :huh: Alguien sabe que estoy haciendo mal? Porque vale que no sepa apenas nada de asm pero madre mía lo que me está dando por culo 4 lineas de nada xD

S4ludos y gracias!!  :-*


En línea

C' Est La Vie
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [?] call que no llama a quien debería (AT&T)
« Respuesta #1 en: 26 Mayo 2009, 21:19 pm »

Mmm ... ¿Lo depuraste? ¿No estaras por casualidad tomando el contenido al que apunta eax para despues llamarlo?


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: [?] call que no llama a quien debería (AT&T)
« Respuesta #2 en: 26 Mayo 2009, 21:22 pm »

es por los () que le dicen que lea el contenido de esa direccion y salte a el valor leido.

En fijate en el code que te pase, el call lo hacia asi:
Código
  1. "call *%eax"
  2.  

saludos
En línea

Nork

Desconectado Desconectado

Mensajes: 196



Ver Perfil
Re: [?] call que no llama a quien debería (AT&T)
« Respuesta #3 en: 26 Mayo 2009, 21:40 pm »

es por los () que le dicen que lea el contenido de esa direccion y salte a el valor leido.

En fijate en el code que te pase, el call lo hacia asi:
Código
  1. "call *%eax"
  2.  

saludos

Sí, sí también lo he probado tal y como dices sólo que lo probé con los "()" y lo dejé así xD El problema igualmente es el mismo, un error de memoria (aunque en diferente posición según ponga los () o no)

Mmm ... ¿Lo depuraste? ¿No estaras por casualidad tomando el contenido al que apunta eax para despues llamarlo?

Pues la verdad no se como comprobar eso  :-\
En línea

C' Est La Vie
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [?] call que no llama a quien debería (AT&T)
« Respuesta #4 en: 26 Mayo 2009, 21:53 pm »

Por lo que comento Arcangel_0x7C5 es exactamente lo que te dije (la sintaxis de AT&T no la uso jamas) y que sean dos errores de memoria no importa ya que no son el mismo seguramente. Podes usar gdb para depurar tu programa.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Nork

Desconectado Desconectado

Mensajes: 196



Ver Perfil
Re: [?] call que no llama a quien debería (AT&T)
« Respuesta #5 en: 26 Mayo 2009, 21:58 pm »

Por lo que comento Arcangel_0x7C5 es exactamente lo que te dije (la sintaxis de AT&T no la uso jamas) y que sean dos errores de memoria no importa ya que no son el mismo seguramente. Podes usar gdb para depurar tu programa.

Voy a intentar depurarlo a ver si saco algo o si no tendré que enviar un correo a Stallman que por lo visto los contesta y a ver si sabe que pasa xD

Gracias!
En línea

C' Est La Vie
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Quién te atienda en un call center pronto dependerá de lo que escribas en ...
Noticias
wolfbcn 0 1,238 Último mensaje 8 Enero 2017, 02:22 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines