Enero 24, 2018, 06:21:51 am

Autor Tema: ¿Cómo elimino basura cuando utilizo write en una funcion?  (Leído 3426 veces)

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

Desconectado proxy_lainux

  • Me das tu IP?
  • *
  • Mensajes: 51
    • Ver Perfil
¿Cómo elimino basura cuando utilizo write en una funcion?
« en: Agosto 13, 2013, 10:21:44 pm »
hola

Estaba haciendo un ejercicio programando una calculadora con nasm, ya habia hecho uno muy basico, pero ahora queria hacerlo usando esp y ebp en funciones

pero tengo una duda, hay una parte donde meto en la pila un buffer, y se me ocurrio que apareciera la frase del buffer en una funcion, solo para verificar que funcionaba, pero cuando compilo el programa me aparece esto

Código: You are not allowed to view links. Register or Login
��suma
asi es como meto en la pila la frase

Código: (asm) You are not allowed to view links. Register or Login
suma:
mov ecx, dword[buf1]
push ecx
call sumar

despues hago una funcion, de esta manera

Código: (asm) You are not allowed to view links. Register or Login
sumar:
push ebp
mov ebp, esp

mov eax, 4
mov ebx, 1
lea ecx, [ebp - 8]
mov edx, 20
int 0x80

mov esp, ebp
pop ebp
ret 8

al parecer si funciona pero no entiendo porque me aparece basura antes de la palabra suma, alguien me podria explicar como podria quitarlo

les dejo el codigo completo

Código: (asm) You are not allowed to view links. Register or Login
[Bits 32]

global _start

section .data

tit: db "Inicio de calculadora",10,10,0
in: db "Escribe el nombre de la funcion",10,0
buf1: times 24 db (0)

section .text

sumar:
push ebp
mov ebp, esp

mov eax, 4
mov ebx, 1
lea ecx, [ebp - 8]
mov edx, 20
int 0x80

mov esp, ebp
pop ebp
ret 8

_start:

mov eax, 4
mov ebx, 1
lea ecx, [tit]
mov edx, 23
int 0x80

mov eax, 4
mov ebx, 1
lea ecx, [in]
mov edx, 32
int 0x80

mov eax, 3
mov ebx, 1
lea ecx, [buf1]
mov edx, 24
int 0x80

cmp dword[buf1], "suma"
je suma
jne fin

suma:
mov ecx, dword[buf1]
push ecx
call sumar

fin:
mov eax, 1
int 0x80

asi lo compilo, porque tengo linux de 64bits pero como ejercicio lo quise hacer en 32bits

nasm -f elf32 calc.asm calc.o
ld -m elf_i386 -s -o calc calc.o

salu2

« Última modificación: Agosto 23, 2013, 11:27:38 am por Binary_Death »

Desconectado proxy_lainux

  • Me das tu IP?
  • *
  • Mensajes: 51
    • Ver Perfil
Re:como elimino basura cuando utilizo write en una funcion?
« Respuesta #1 en: Agosto 13, 2013, 11:51:47 pm »
ahora si lo solucione, no sabia que al usar push, la pila no lo modifica

entonces en vez de usar ebp - 8, tenia que haber usado ebp + 8, yo creia que todo lo que estuviera en la memoria alta, se cambiaba a la memoria baja despues de usar ebp, esp

pero ahora tengo otro problema

cuando hago una suma, me aparece como ascii

34
43

gg

asi me aparece cuando intento hacer una suma de 34 y 43

encontre que se tenia que convertir de ascii a decimal y luego viceversa despues de usar add, pero solo logro sumar el primer numero

34
43
7g

alguien me podria decir como se suma porfavor, vuelvo a dejar el codigo completo

y otra cosa, como hago un "\n" en un syscall?

porque tengo que escribir enseguida de la palabra y me gustaria escribir abajo

suma34

y me gustaria que fuera asi

suma
23

alguien sabe como hacerlo, bueno dejo el codigo

Código: (asm) You are not allowed to view links. Register or Login
[Bits 32]

global _start

section .data

tit: db "Inicio de calculadora",10,10,0
in: db "Escribe el nombre de la funcion",10,0
buf1: times 24 db (0)
buf2: times 20 db (0)

section .text

sumar:
push ebp
mov ebp, esp
sub esp, 20

mov eax, 4
mov ebx, 1
lea ecx, [ebp + 8]
mov edx, 4
int 0x80


mov eax, 3
mov ebx, 1
lea ecx, [ebp - 16]
mov edx, 4
int 0x80

mov eax, 3
mov ebx, 1
lea ecx, [ebp - 12]
mov edx, 4
int 0x80

mov eax, dword[ebp - 16]
mov ebx, dword[ebp - 12]

add eax, ebx
mov[buf2], eax

mov eax, 4
mov ebx, 1
lea ecx, [buf2]
mov edx, 20
int 0x80

mov esp, ebp
pop ebp

ret 8
_start:

mov eax, 4
mov ebx, 1
lea ecx, [tit]
mov edx, 23
int 0x80

mov eax, 4
mov ebx, 1
lea ecx, [in]
mov edx, 32
int 0x80

mov eax, 3
mov ebx, 1
lea ecx, [buf1]
mov edx, 8
int 0x80

cmp dword[buf1], "suma"
je suma
jne fin

suma:
push dword[buf1]
call sumar

fin:
mov eax, 1
int 0x80
« Última modificación: Agosto 14, 2013, 12:39:27 am por proxy_lainux »

Desconectado proxy_lainux

  • Me das tu IP?
  • *
  • Mensajes: 51
    • Ver Perfil
Re:como elimino basura cuando utilizo write en una funcion?
« Respuesta #2 en: Agosto 14, 2013, 11:23:18 am »
ya lo solucione  ;D


question
mi pc se reinicia cuando utilizo la gravadora ¿virus?

Iniciado por nanonana

3 Respuestas
1650 Vistas
Último mensaje Junio 05, 2006, 04:27:16 pm
por Yngwie Maty
xx
duda javascript...cuando coloco el value desde uan funcion desaparece

Iniciado por Fhaker

0 Respuestas
968 Vistas
Último mensaje Diciembre 17, 2007, 06:04:26 pm
por Fhaker
question
googlebot... como lo utilizo???!!

Iniciado por enanitoh_999

7 Respuestas
1105 Vistas
Último mensaje ſeptiembre 02, 2011, 10:27:32 am
por seth
xx
Exploit como lo utilizo

Iniciado por Supremo

7 Respuestas
1790 Vistas
Último mensaje Abril 26, 2007, 09:13:32 pm
por OzX
question
¿Como utilizo este exploit??

Iniciado por KAISSER

1 Respuestas
1324 Vistas
Último mensaje Enero 21, 2007, 12:50:58 pm
por OzX
question
Como utilizo el Ardamax Keylogger?

Iniciado por Crxz4d0~

1 Respuestas
1036 Vistas
Último mensaje Junio 07, 2011, 08:53:49 am
por estribok
resuelto
¿Cómo utilizo ares para infectar?

Iniciado por lRammstein.

8 Respuestas
2105 Vistas
Último mensaje ſeptiembre 29, 2009, 08:06:03 pm
por lRammstein.
xx
HEY COMO UTILIZO LOS TROYANOS Y EN ESPECIAL LOS KEYLOGGERS

Iniciado por shelon

3 Respuestas
1035 Vistas
Último mensaje Febrero 27, 2007, 06:02:10 pm
por BachoNoob
xx
como utilizo la coneccion de un formulario en otro con winsock?

Iniciado por ptemillos

9 Respuestas
1652 Vistas
Último mensaje Abril 08, 2009, 01:44:32 am
por EddyW
xx
Autorun.inf como lo elimino

Iniciado por charles910

6 Respuestas
9516 Vistas
Último mensaje Febrero 04, 2010, 02:05:06 pm
por ADX