comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Fallo de socket en un programa de ensamblador

  • 0 Respuestas
  • 286 Vistas

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

Desconectado catarsis

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
  • Nada es seguro
    • Ver Perfil
    • Email
« en: Julio 14, 2018, 03:36:11 pm »
Este codigo hecho con nasm pone en espera una conexion, se ejecuta bien hasta el punto donde quiere mandar la respuesta y cuando se quiere hacer la conexion por telnet (telnet 'localhost' 9000) hace la conexion pero del lado del servidor(el programa en nasm) se produce una   "Violación de segmento".
ESTE CODIGO NO ES MIO, LO ESTABA LEYENDO Y HACIENDO PRUEBAS Y ME DI CUENTA DE LA VIOLACION DE SEGMENTO

Código: You are not allowed to view links. Register or Login
; constants go here
section .data
    start: db 'Starting Socket...',0
    start_len: equ $-start

; variables go here
section .bss
    socket: resd   1
    socket_address: resd    2

; starttttt
section .text
    global _start

open_socket:

    ; Primir que incio
    mov eax,4
    mov ebx,1
    mov ecx,start
    mov edx,start_len
    int 80h

    ; Pushear los valores para el socket
    push    dword   6
    push    dword   1
    push    dword   2

    ; Abriendo un socket
    mov eax,102 ; 102
    mov ebx,1
    mov ecx,esp
    int 80h

    mov dword[socket],eax

    ; Estos son los parametros para enlazarse
    push    dword   0x00000000 ; localhost (127.0.0.1)
    push    dword   0x2823 ; port 9000
    push    word    2 ; AF_INET (IPv4)
    mov [socket_address],esp

    push    dword  16
    push    dword   [socket_address]
    push    dword   [socket]

    ; llamada al socket para enlazarse
    mov eax,102
    mov ebx,2
    mov ecx,esp
    int 80h

    ; parametros para la escucha
    push    byte    20
    push    dword   [socket]

    ; call listen()
    mov eax,102
    mov ebx,4
    mov ecx,esp
    int 80h

    ; Ahora tenemos que aceptar conexiones entrantes
    push    0
    push    0
    push    dword   [socket]

    ; Llamada accept()
    mov eax,102
    mov ebx,5
    mov ecx,esp
    int 80h

    ;Pusher dentro de la pila para mandarlo
    push    dword   0
    push    dword   [start_len]
    push    dword   [start]
    push    dword   [socket]

    ; Mandar algo de regresO
    ; AQUI ES DONDE LA VIOLACION DE SEGMENTO OCURRE
    mov eax,102
    mov ebx,9 ; send is 9
    mov ecx,esp
    int 80h

;Salir del programa
exit:
    mov eax,1
    mov ebx,0
    int 80h

;Main
_start:

    ; open it
    call open_socket
ktarzyz

 

¿Te gustó el post? COMPARTILO!



Lenguaje Ensamblador para PC [Libro - Paul A. Carter - 2006]

Iniciado por Stiuvert

Respuestas: 0
Vistas: 3189
Último mensaje Agosto 09, 2012, 05:56:07 am
por Stiuvert
[UnderTIP] ¿Como aprender a programar en ensamblador de manera mas fácil?

Iniciado por Yuki

Respuestas: 0
Vistas: 1758
Último mensaje Junio 21, 2017, 01:39:05 am
por Yuki
Manual Ensamblador (#1) By Viktor SalEm

Iniciado por ProcessKill

Respuestas: 2
Vistas: 2497
Último mensaje Junio 28, 2010, 01:57:13 pm
por 303010
[Tutorial] Lenguaje ensamblador por .:UND3R:.

Iniciado por .:UND3R:.

Respuestas: 8
Vistas: 5560
Último mensaje Junio 11, 2016, 09:32:10 pm
por fleshworm
Tutorial Básico del Lenguaje Ensamblador

Iniciado por Stuxnet

Respuestas: 0
Vistas: 3642
Último mensaje Julio 08, 2012, 04:06:31 pm
por Stuxnet