Escribir 'A' en mi primer programa : ¿No funciona?

Iniciado por Garfield07, 31 Diciembre 2010, 17:41 PM

0 Miembros y 1 Visitante están viendo este tema.

Garfield07

Bueno, me ha salido otra dudilla pequeña...
Por qué lo haceis asi ?
Código (asm) [Seleccionar]

global _start

section .code
_start:
push ecx
mov byte [esp], 041h
mov eax, 0x4
mov ebx, 0x1
mov ecx, esp
mov edx, 0x1
int 80H
pop ecx

mov eax, 1
xor ebx, ebx
int 80H


Primero, push y pop sobran.
Segundo, deja bytes nulos xD... (mala constumbre  :P)
Comparando, en la mia me ahorro 12 bytes al acabar toda la compilacion  :silbar: :silbar: :silbar:
Código (asm) [Seleccionar]

global _start

section .code
_start:

mov byte [esp], 0x41
mov al, 0x4
mov bl, 0x1
mov ecx, esp
mov dl, 0x1
int 80H

mov al, 1
xor ebx, ebx
int 80H


Bueno, ahora para usar el code simplemente compilo
nasm -f elf hello.s
y miro cuanto ocupa
wc -c hello
¿Correcto? Ahora eso lo uso como shellcode no?
Alguien me puede corregir xD?


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Eternal Idol

En realidad por logica push y pop no sobran, estas sobreescribiendo la direccion de retorno, que se guarda en la pila, es cierto que salis con una interrupcion del programa PERO si queres hacer eso en una funcion cuando hagas ret te vas a arrepentir. No hay bytes nulos, su valor sera el mismo que tenian antes, el unico que cambia es el que nos interesa ...
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

Garfield07

Código (asm) [Seleccionar]

mov eax, 0x4

No tengo mucha idea de esto, pero gracias por el consejo ...
Y luego... ¿por qué no? Al moverlos asi el valor de eax puede ser cualquiera... Ahhhhhhhhh, como yo lo hago no "limpio" eax?. De la otra forma solo modifico una parte, la otra se queda igual...
Muchisimas gracias estoy apavado  perdona xD...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Eternal Idol

La verdad es que no me habia referido a eso, ni habia visto ese cambio pero si podria ser un problema si EAX es por ejemplo 0xFFFFFFFF ...
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

Garfield07

#14
Aparte, solucionado esto, para hacer la shellcode tendria que compilar sin linkear...
asi?
nasm shellcode.s
y me generaria "shellcode"
luego
hexdump shellcode
y tengo mi shellcode xD no?

¿No iria esto en bugs y exploits? Lo pongo aqui porque a lo mejor para shellcode tendria que modificar algo mas no?
por ejemplo, se suele compilar...
Código (asm) [Seleccionar]

BITS 32   ;Esto es lo que se cambia por segment .code, etc...

mov byte [esp], 0x41
mov al, 0x4
mov bl, 0x1
mov ecx, esp
mov dl, 0x1
int 80H

mov al, 1
xor ebx, ebx
int 80H

Correcto ?
Luego me tendre que repasar lo que se sobre BoF pero weno ahora mismito la shellcode jaja.
Como es?


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo