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


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>  (Leído 8,979 veces)
<<The Joker>>

Desconectado Desconectado

Mensajes: 20


"Hasta la victoria siempre..."


Ver Perfil
ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>
« en: 23 Enero 2006, 05:52 »

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....



En línea

Ivanchuk


Desconectado Desconectado

Mensajes: 469


LLVM


Ver Perfil WWW
Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>
« Respuesta #1 en: 26 Enero 2006, 16:47 »

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


En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
<<The Joker>>

Desconectado Desconectado

Mensajes: 20


"Hasta la victoria siempre..."


Ver Perfil
Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>
« Respuesta #2 en: 1 Febrero 2006, 15:51 »

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...
En línea

dicarola

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>
« Respuesta #3 en: 5 Enero 2010, 16:31 »

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!!
En línea

AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.989


Anonymous & Paranoid


Ver Perfil WWW
Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>
« Respuesta #4 en: 7 Enero 2010, 05:02 »

Yo lo puedo realizar en ASM de Linux o mas bien FreeBSD te sirve???

Muevo el tema al foro de ASM

Saludos
En línea

YST


Desconectado Desconectado

Mensajes: 966


I'm you


Ver Perfil WWW
Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>
« Respuesta #5 en: 7 Enero 2010, 06:11 »

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
  1. # While
  2.  
  3. while:
  4.   cmp $0, %eax
  5.   je endwhile
  6.   addl p, %ebx      # aux = aux + %ebx
  7.   jmp while
  8.  
  9. # End While

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
En línea



Yo le enseñe a Kayser a usar objetos en ASM
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.091


La mano invisible del mercado me robo la billetera


Ver Perfil WWW
Re: ARCHIVOS EN ENSAMBLADOR IA-32 <<URGENTE>>
« Respuesta #6 en: 7 Enero 2010, 10:08 »

Si te da una excepcion depuralo con gdb (sin un codigo que genere ejecutable ni lo veo).
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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
URGENTE archivos D3DBSP!!!!!!!!!!!!!!!!
Dudas Generales
olrip1988 1 590 Último mensaje 16 Octubre 2012, 03:58
por Elemental Code
AYUDA URGENTE ARCHIVOS
Programación C/C++
josecorbera 1 148 Último mensaje 22 Mayo 2014, 12:47
por Eternal Idol
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines