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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  imprimir los bits que hay en una direccion de memoria
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: imprimir los bits que hay en una direccion de memoria  (Leído 10,367 veces)
lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
imprimir los bits que hay en una direccion de memoria
« en: 7 Noviembre 2009, 19:06 pm »

La verdad que no tengo ni idea de como hacerlo lo que mas me hacerco es esto:
Código:
.text
.global main

main:

movl 1, %eax
movl %eax, u
movl $u, %ecx
addl $48, %ecx


movl $3, %edx
movl $1, %ebx
movl $4, %eax
int $0x80

.data

u:
.string "0"
Quisiera mostrar lo que hay en la direccion 1 de la memoria, no se ni siquiera si se puede o esta protegido :-\


« Última modificación: 7 Noviembre 2009, 19:09 pm por tuket » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


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


Ver Perfil WWW
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #1 en: 7 Noviembre 2009, 19:48 pm »

La direccion 1 seguro que no es valida, mejor intenta con la de tu main, asi sabras el codigo binario de las instrucciones  ::)

PD. No mire el codigo pero depuralo con el gdb en todo caso.


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
lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #2 en: 7 Noviembre 2009, 22:29 pm »

para poner los bits seria una strig? mira el ccodigo porfa que seguro que lo tengo todo mal :(
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


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


Ver Perfil WWW
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #3 en: 7 Noviembre 2009, 22:38 pm »

Si, de unos y ceros ...

¿Y si usas la g/libc? Tenes disponible la funcion printf por ejemplo, seria mucho mas simple y podrias imprimirlo en hexadecimal ... cuando ya la domines podes incluso depurarla y ver que hace exactamente.
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
Yurix

Desconectado Desconectado

Mensajes: 72


Paz para la guerra y guerra por la paz


Ver Perfil
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #4 en: 13 Noviembre 2009, 16:06 pm »

Hola , puedes hacer eso con este codigo:
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1269217#msg1269217

saludos
Cualquier duda me dices!
En línea



http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.
lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #5 en: 29 Noviembre 2009, 16:52 pm »

siiiiiiii, gracias Yurix es justo lo que buscaba.
Perdon que he estado estos dias ocupado con examenes y  no he mirado el foro casi.
Bueno ahora luego te digo que tal ;)
Para que ensamblador es el codigo?

EI: juntando mensajes.

buf no entiendo na  :-[
Que es bt?
lpBinario es todo una variable?
numero seria la celdilla de memoria?
« Última modificación: 29 Noviembre 2009, 19:34 pm por Eternal Idol » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


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


Ver Perfil WWW
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #6 en: 29 Noviembre 2009, 19:36 pm »

http://pdos.csail.mit.edu/6.828/2007/readings/i386/BT.htm

lpBinario es un puntero a cadena, numero es el entero (de un byte) a convertir.

Mira el ejemplo de llamada:
invoke IntToBin,0A0h,addr binario
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
Yurix

Desconectado Desconectado

Mensajes: 72


Paz para la guerra y guerra por la paz


Ver Perfil
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #7 en: 2 Diciembre 2009, 17:53 pm »


Veo que este código no lo pillan mucho los novatos (eso no quiere decir que sea un master)  , voy a poner otro código que es mas fácil de entender. Espéralo hoy mismo , lo estoy escribiendo .... :

Te lo explico con lujo de detalles ::
-----------------------------------------------------
   mov eax, number ;<< El numero que se "convierte"

   mov ecx,020h  ; Longitud total de los bits + 1 , es decir 20h es 32 en decimal

mov ebx,offset buff - 1 ; Binario es la string donde se alojara el numero convertido

aun3:
    shr eax,1  ; Esto es "botar" 1bit hacia la derecha.
    adc BYTE PTR[ebx+ecx], 30h
loop aun3
-------------------------------------------------------

SHR , es lo mismo que hacer (>>) en otro lenguaje X , como C. Lo que hacemos es botar un bit hacia la derecha , cada bit expulsado activa el flag C *(carry flag) si es un 1 , si es un 0 no lo activa. Esto lo usamos para ir construyendo la cadena ASCII "01110101011".

ADC , es una suma común + el bit del flag C , es decir , sumas 30h *(que es el CERO) y si el flag C esta activo se suma 1bit , lo que da como resultado el 31h (el UNO)

El loop es mas fácil , tu mueves a ecx la cantidad de veces que quieres que se repita el show .Ej>

mov ecx,10

hola:
xor eax,eax  < Se repite 10 veces..
loop hola

Loop comprobara que ecx no sea CERO , si no lo es saltara a hola: , con cada salto se decrementa en 1 ecx , hasta llegar un momento en que sea CERO .
-----
BYTE PTR[ebx+ecx] < Con esto lo que hago es apoyarme en ECX (que va de mayor a menor gracias al loop) para hacer el adc en ese lugar , la "base" es ebx que indica el lugar que reservamos para hacer esta operación.

Te recuero que TIENE QUE SER UN LUGAR QUE ESTE "BACIO" con 0000s

Gózalo
En línea



http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.
lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #8 en: 3 Diciembre 2009, 19:47 pm »

madre mia que lujo, tampoco hacia falta que te molestases tanto, hombre
 ya casi  lo pillo ;D
Lo del SRH me recuerda cuando en los bancos de micolegio ,hay unos que para hacerse hueco empujan la fila y se cae el del otro lado  :xD :xD :xD :xD :xD :xD el que se queda fuera seria el que se queda en el registro de acarreo y el que empuja seria un CERO ¿lo he entendido?

Código:
IntToBin  proc Numero:BYTE,lpBinario:DWORD
esto que es ??yo he provado a compilarlo y me da error en esa linea.
gracias
« Última modificación: 3 Diciembre 2009, 20:26 pm por tuket » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


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


Ver Perfil WWW
Re: imprimir los bits que hay en una direccion de memoria
« Respuesta #9 en: 3 Diciembre 2009, 21:27 pm »

tuket: PROC.
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] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Darle la vuelta a una direccion de memoria.
Análisis y Diseño de Malware
0xDani 2 2,673 Último mensaje 2 Diciembre 2012, 21:02 pm
por 0xDani
DUDA ACERCA DE UNA DIRECCION DE MEMORIA EN OOLYDBG « 1 2 3 »
Ingeniería Inversa
bodoke1969 21 10,804 Último mensaje 28 Febrero 2013, 05:04 am
por arturoro
Imprimir bits de un objeto
Programación C/C++
patilanz 5 2,219 Último mensaje 20 Febrero 2015, 07:43 am
por eferion
[Consulta] ¿Cómo imprimir un carácter en la consola de Windows (32 bits) (NASM)
ASM
HelloWorldCodigo 5 3,457 Último mensaje 23 Agosto 2015, 22:22 pm
por Eternal Idol
Direccion de memoria + numero != Direccion de memoria esperada
Programación C/C++
dgrip 7 2,378 Último mensaje 22 Abril 2019, 12:55 pm
por dgrip
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines