Autor
|
Tema: imprimir los bits que hay en una direccion de memoria (Leído 10,810 veces)
|
lapras
|
La verdad que no tengo ni idea de como hacerlo lo que mas me hacerco es esto: .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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
|
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 72
Paz para la guerra y guerra por la paz
|
|
|
|
En línea
|
|
|
|
lapras
|
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
http://pdos.csail.mit.edu/6.828/2007/readings/i386/BT.htmlpBinario 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
Mensajes: 72
Paz para la guerra y guerra por la paz
|
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
|
|
|
|
lapras
|
madre mia que lujo, tampoco hacia falta que te molestases tanto, hombre ya casi lo pillo 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 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? 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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
|
|
|
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
|
|
|
|
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,888
|
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
|
11,714
|
28 Febrero 2013, 05:04 am
por arturoro
|
|
|
Imprimir bits de un objeto
Programación C/C++
|
patilanz
|
5
|
2,444
|
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,818
|
23 Agosto 2015, 22:22 pm
por Eternal Idol
|
|
|
Direccion de memoria + numero != Direccion de memoria esperada
Programación C/C++
|
dgrip
|
7
|
2,734
|
22 Abril 2019, 12:55 pm
por dgrip
|
|