Título: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>> Publicado por: <<The Joker>> en 23 Enero 2006, 05:52 am Hey... saludos oootra vez a la comunidad de el hacker.net
Esta vez me comunico con ustedes a ver si me pueden ayudar a entender como manejar ciertas cosas de el lenguaje ENSAMBLADOR para arquitecturas IA-32. Estoy programando para un proyecto de la universidad, un encriptador de datos en 4 metodos distintos, para realizar este encriptador necesito pedir como entrada LA RUTA DEL ARCHIVO A cifrar y el nombre del archivo que se va a generar con el codigo cifrado... el asunto es QUE NO TENGO NI IDEA DE COMO MANEJAR ARCHIVOS EN ENSAMBLADOR... Podria alguien darme un tutorial de ARCHIVOS para IA-32 o mandarme un pequeño SCRIPT de como abrir archivos y leerlos CARACTER por CARACTER!!!... muchas gracias.... Título: Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>> Publicado por: Ivanchuk en 26 Enero 2006, 16:47 pm Para acceder al disco podes usar la interrupcion 13h, el tema que es a bajo nivel. Si estas programando sobre DOS usa la 21h. Mas info?,
Ralf Brown's Interrupt List (http://www.ctyme.com/rbrown.htm) Título: Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>> Publicado por: <<The Joker>> en 1 Febrero 2006, 15:51 pm Para la gente interesada en el tema...
Logre resolver la duda con la ayuda de algunos compañeros de clases... En ensablandor (en arquitectura IA-32, en la cual era mi duda) se pueden hacer llamadas a funcione spropias de C, en mi caso estoy programando en la consola de LINUX y simplemente se deben hacer los enlaces a las librerias o bibliotecas necesarias para poder hacer el uso a funciones como FOPEN y FGETC.. por ejemplo: Para abrir un archivo simplemente se tiene le tiene que pasar como parametro a la funcion FOPEN el tipo de archivo que estas abriendo y el nombbre del archivo... se hace asi: push $r #se apila R indicando que es un archivo de Lectura (READ) push ARCHIVO #es la etiquiera que contiene el nombre del archivo a leer call fopen #se llama a la funcion de C FOPEN y recibe por parametro R y ARCHIVO add $8,%ebp #Se libera el marco de pila... esta funcion te va a retornar en el registro %EAX un apuntador a la direccion absoluta del archivo... pór lo cual se debe almacenar dicha variable en algun lado para no perder la referencia. (movl %eax,apuntador) en el caso de leer caracter a caracer... push apuntador call fgetc add $4,%ebp En este caso en retorna el valor del caracter en %EAX y puede validar el Fin de ARchivo cuando %EAX es igual a 0. si se quiere leer todo un archivo se crea un ciclo que haga un recorrido hasta que %EAX sea igual a 0. vale?.. Espero que les sirva a futuras personas que tengan la duda que yo tuve... Título: Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>> Publicado por: dicarola en 5 Enero 2010, 16:31 pm Para la gente interesada en el tema... Logre resolver la duda con la ayuda de algunos compañeros de clases... En ensablandor (en arquitectura IA-32, en la cual era mi duda) se pueden hacer llamadas a funcione spropias de C, en mi caso estoy programando en la consola de LINUX y simplemente se deben hacer los enlaces a las librerias o bibliotecas necesarias para poder hacer el uso a funciones como FOPEN y FGETC.. por ejemplo: Para abrir un archivo simplemente se tiene le tiene que pasar como parametro a la funcion FOPEN el tipo de archivo que estas abriendo y el nombbre del archivo... se hace asi: push $r #se apila R indicando que es un archivo de Lectura (READ) push ARCHIVO #es la etiquiera que contiene el nombre del archivo a leer call fopen #se llama a la funcion de C FOPEN y recibe por parametro R y ARCHIVO add $8,%ebp #Se libera el marco de pila... esta funcion te va a retornar en el registro %EAX un apuntador a la direccion absoluta del archivo... pór lo cual se debe almacenar dicha variable en algun lado para no perder la referencia. (movl %eax,apuntador) en el caso de leer caracter a caracer... push apuntador call fgetc add $4,%ebp En este caso en retorna el valor del caracter en %EAX y puede validar el Fin de ARchivo cuando %EAX es igual a 0. si se quiere leer todo un archivo se crea un ciclo que haga un recorrido hasta que %EAX sea igual a 0. vale?.. Espero que les sirva a futuras personas que tengan la duda que yo tuve... Hola que tal, estuve buscando por ineternet y casualmente encontre este post que me ha servido porque es justo lo q estaba buscando, se q fue posteado hace mucho pero ojala aun puedan ayudarme, estaba haciendo lo del fgets para leer caracter a caracter d una archivo y bueno resulta que queiro leer todo el archivo y llevar un contador para luego hacer una copia del archivo. Tengo esto: # leer caracter a caracter push apuntador call fgetc add $4,%ebp En este caso en retorna el valor del caracter en %EAX y puede validar el Fin de ARchivo cuando %EAX es igual a 0. si se quiere leer todo un archivo se crea un ciclo que haga un recorrido hasta que %EAX sea igual a 0. # movl $1, %ebx # %ebx=0 # addl aux, %ebx # aux = aux + %ebx # While while: cmp $0, %eax je endwhile addl p, %ebx # aux = aux + %ebx jmp while # End While endwhile: pushl %eax pushl %ecx pushl %edx call Metodo1 ------------------------------ bueno si hago esto: # leer caracter a caracter push apuntador call fgetc add $4,%ebp no m da error Pero si hago el ciclo while m sale una violacion de segmento Podrian ayudarme xfis!! Título: Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>> Publicado por: AlbertoBSD en 7 Enero 2010, 05:02 am Yo lo puedo realizar en ASM de Linux o mas bien FreeBSD te sirve???
Muevo el tema al foro de ASM Saludos Título: Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>> Publicado por: YST en 7 Enero 2010, 06:11 am Con miedo de equivocarme lo digo a si que mejor esperar confirmacion ya que muy pocas veces eh trabajado con este tipo de sintaxis :P
Código
eax nunca se modifica osea que si eax no es 0 cuando entra nunca lo va a ser y se convierte en un bucle infinito Título: Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>> Publicado por: Eternal Idol en 7 Enero 2010, 10:08 am Si te da una excepcion depuralo con gdb (sin un codigo que genere ejecutable ni lo veo).
|