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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Problema al escribir archivo con sys_call numero 8
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al escribir archivo con sys_call numero 8  (Leído 3,425 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Problema al escribir archivo con sys_call numero 8
« en: 3 Julio 2010, 17:28 pm »

Bueno, por fin cuando ya estoy metido de lleno en el mundo de programación con asm, se me presentan los tipicos problemas de logica por falta de conocimiento, que me pasaron cuando estuve en Basi, en Java y en C++.

Bueno el codigo que me deducido es el siguiente:
Código
  1. section .data
  2. hello     db 'Hello, world!',10 ; Our dear string
  3. helloLen equ $ - hello ; Length of our dear string
  4.        dataSecond    db   'Datos escritos correctamente',10
  5.           dataLen   equ   $ - dataSecond
  6.        file         db    '/root/archivo.txt',10
  7.  
  8. section .text
  9.    global _start
  10.  
  11. _start:
  12. pop ebx
  13.        pop ebx
  14.        pop ebx  ;arg[3] o el directorio del archivo a escribir en ebx
  15.  
  16. mov eax,8 ; Syscall a creat
  17. mov ecx,00644Q ; Permisos de lectura en Octal (rw_rw_rw_)
  18. int 0x80 ; Llamada al kernel de Linux
  19. ; Ahora tenemos el file descriptor o handler del archivo selecionado en ebx
  20.  
  21. test eax,eax ; Igualamos si el file descriptor es correcto
  22. js skipWrite
  23. call fileWrite    ; Primer procedimiento de escritura
  24. call fileWSegundo       ; Segundo procedimiento de escritura
  25.  
  26.  
  27. skipWrite:
  28. mov ebx,eax ; Guardamos el error en ebx
  29. mov eax,1 ; Syscall 1 - Finalizar ejecucion
  30. int 0x80 ; llamamos al kernel
  31.  
  32. ; proc fileWrite - write a string to a file
  33. fileWrite:
  34. mov ebx,eax ; sys_creat devuelve un handler de archivos en eax, lo ponemos en ebx
  35. mov eax,4 ; sys_write
  36. ; ebx is already set up
  37. mov ecx,hello ; La cadena de texto en ecx, como tercer argumento de la función
  38. mov edx,helloLen ; la length de nuestra cadena definida como constante con equ
  39. int 0x80
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. fileWSegundo:
  47.        mov ebx,eax ; sys_creat devuelve un handler de archivos en eax, lo ponemos en ebx
  48. mov eax,4 ; sys_write
  49. mov     ecx,dataSecond
  50.        mov     edx,dataLen
  51.        int     0x80
  52.  
  53.        mov eax,6 ; sys_close
  54. int 0x80
  55. ret ; No se para que sirve pero lo he visto en mas programas :S
  56.  
  57. ; endp fileWrite
  58.  
  59.  

La cosa es que no me escribe dicho archivo, he querido crear dos procedimientos para escribir por separado, por mero aprendizaje, el ver que puedo separar la runtime en varios procedimientos, no mas que eso.

Alguien me podria orientar? Y explicarme que hace el ret :P


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Problema al escribir archivo con sys_call numero 8
« Respuesta #1 en: 3 Julio 2010, 20:21 pm »

Te recomiendo conseguir algun libro o varios tutoriales en su defecto (no es lo mismo claro), ret:

http://pdos.csail.mit.edu/6.828/2005/readings/i386/RET.htm


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
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Problema al escribir archivo con sys_call numero 8
« Respuesta #2 en: 3 Julio 2010, 23:43 pm »

He leido sobre calls jumps y procedimientos, y en teoria no hay nada mal en lo que he codeado :S


Solo he visto que no haga un Jmp o JE a un proc donde haya ret pues dice que se acabará el programa :S

Saludos
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


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


Ver Perfil WWW
Re: Problema al escribir archivo con sys_call numero 8
« Respuesta #3 en: 4 Julio 2010, 00:27 am »

¿Ya viste para que sirve ret? En la funcion fileWrite falta ... depuralo.
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
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Problema al escribir archivo con sys_call numero 8
« Respuesta #4 en: 4 Julio 2010, 12:11 pm »

Muy cierto ;) Ves un pequeño error ;)
Gracias por aguantar a este pesado, siempre eternal idol, user ejemplar ;)

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines