Domingo 22 de Diciembre de 2024, 12:09
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Metiendo "texto" En La Pila
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Metiendo "texto" En La Pila (Leído 2715 veces)
SeSoX
Nuevo Miembro
Mensajes: 4
Metiendo "texto" En La Pila
«
en:
Martes 16 de Diciembre de 2003, 02:13 »
0
Buenas a todos!!
NOTA: acabo de empezar con asm y no tengo ni puta idea
Pues lo que quiero hacer es un pekeñisimo programa que cree un directorio, lo estoy intentando hacer desde linux y ya se como va todo, pero no se como meter el nombre del directorio sin usar la seccion data, lo quiero hacer metiendo el nombre del directorio en la pila, me da igual que el nombre del directorio sea un numero.....
He visto un ejemplo q utiliza lo siguiente:
pushl $0x0
pushl $0x37333331
y luego accede a esos datos para crear un directorio llamado 7331 pero no entido pq ocurre esto, como podria crear un directorio llamado 11737 y si se podria llegar a crear un directorio con texto (de nombre "nuevo_dir" por ejemplo) con esta tecnica.
Gracias!
Tweet
Super_G
Miembro MUY activo
Mensajes: 375
Re: Metiendo "texto" En La Pila
«
Respuesta #1 en:
Martes 16 de Diciembre de 2003, 05:13 »
0
En linux ni idea.
Pero por lo que dices podria adivinar que :
supongo que haras una llamada a una funcion en linux para qrear el directorio(creo que en la int 80h esta todo), pues tambein supongo que le pararas el para metro del nombre del nuevo directorio, y por lo que dices supongo que el paso de parametros es por PILA.
El primer dato es 0x0; entoces debe trabajar on cadenas asciiZ(una cadena d ecaracteres que termina en cero) pues lo que debes empilar seria(digo yo) el valor de las caracteres ascii de la cadena o nombre del directorio
push $0x434f534153
esto seria la cadena 'COSAS', y seria el nombre del directorio
67=C;79=O;83=S;65=A;83=S
SeSoX
Nuevo Miembro
Mensajes: 4
Re: Metiendo "texto" En La Pila
«
Respuesta #2 en:
Martes 16 de Diciembre de 2003, 13:44 »
0
rlz!!! asi va perfecto! me hice un prog en c para psar de caracter a hexa y con eso ya puedo
mirar como seria un nombre en hexa. Gracias tio!!!
el programa me keda asi, y me crea el directorio COSA
main:
pushl $0x0
pushl $0x41534f43
movl $0x1ed, %ecx
movl %esp, %ebx
movl $0x27, %eax
int $0x80
xorl %ebx, %ebx
movl $0x1, %eax
int $0x80
Por cierto, con cada pushl puedo crear un directorio de 4 caracteres pero y si quiero que sea de 6 ? es que si es de 4,8,12... pues meto un pushl y listo, pero si tengo q meter solo medio pushl ? sabes como podria hacerlo ?
Martin Candurra
Miembro activo
Mensajes: 36
Re: Metiendo "texto" En La Pila
«
Respuesta #3 en:
Martes 16 de Diciembre de 2003, 18:50 »
0
Tu problema esta en que a las llamadas al sistema se les pasa via el stack los parametros por REFERENCIA, no por valor.
Esa direccion es en la que se encuentra el string que representara el nombre, el cual debera terminar en null ('\0').
Busca un articulo en google llamdado Smashing the stack for fun & profit, en el cual alph1 explica como llamar a exec pasando el argumento residiendo este en el stack.
Te lo explicaria, pero estando explicado por un grande, no tiene sentido que repita lo mismo y encima deformandolo.
SeSoX
Nuevo Miembro
Mensajes: 4
Re: Metiendo "texto" En La Pila
«
Respuesta #4 en:
Jueves 18 de Diciembre de 2003, 16:43 »
0
Buenas Martin, el texto de aleph1 asi como otros textos del mismo tipo ya me he leido, estoy intentando sacar probecho de todos para aprender.....
Pero es que muchas vesces me resulta complicado saber como se pueden hacer cosas concretas.
En el codigo que he pasteado en el post anterior, ya me ejecuta la funcion y me mete el texto en la pila, solo que con esa tecnica solo puedo meter texto de 4 en 4 caracteres, es decir nombres como COSA, ROSA, CASAVERD y bueno, lo que pregunte fue como meter una palabra como MICASA con la cual tendria que hacer un pushl y luego en el otro meter solo 2 caracteres... pero claro, no puede meter esos 2 caracteres y luego nulos, habria que hacer de otra forma ¿como? pues no lo se jejeje.
No se si me he explicado pq casi no me entiendo ni yo, pero bueno ya hare pruebas para sacarlo.
Un saludo ;D
Martin Candurra
Miembro activo
Mensajes: 36
Re: Metiendo "texto" En La Pila
«
Respuesta #5 en:
Viernes 19 de Diciembre de 2003, 13:19 »
0
Con que fin queres meter texto en la pila ? Que es la pila para vos ?
Si definis una variable local en C, esa variable está en el stack.
En Asm deberías hacer (sintaxis NASM)
segment STACK
comienzo_stack:
mensaje_en_stack db 'Este es mi mensaje en el stack',0
largo_stack reserve 128
LARGO_STACK EQU $ - comienzo_stack
Ya tenes el texto que querias en el stack, en el segmento STACK, offset mensaje_en_stack. Cuando quieras llamar a write, por ejemplo:
write(fd, void *buffer, size_t len)
En ECX vas a tener que poner la direccion de buffer:
mov ax, STACK
mov bx, mensaje_en_stack
shl ax, 4
add eax, ebx
mov ecx, eax ;Aca tenes la direccion absoluta del string que esta en tu stack en el registro ecx.
La cosa es bastante simple. No logro comprender con que tenes problemas
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Metiendo "texto" En La Pila