Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: xv0 en 26 Febrero 2013, 20:55 pm



Título: Argumento 64 bits.
Publicado por: xv0 en 26 Febrero 2013, 20:55 pm
Hola

Cuando paso el valor al cuarto argumento rcx, al llamar la syscall el valor se torna nuló, es lo que muestra kdump, ¿A que se debe?.


Código
  1. .section .text
  2. .globl _start
  3.  
  4. _start:
  5.  
  6. pushq $0x2
  7. popq %rdi
  8. pushq $0x1
  9. popq %rsi
  10. movb $0x6, %dl
  11. addb $0x61, %al
  12. syscall
  13.  
  14. xchgq %rax, %rdi
  15. incq %r8
  16. incq %rsi
  17. leaq 0x8(%rsp), %rcx
  18. movb $0x69, %al
  19. syscall

Código:
CALL  socket(PF_INET,SOCK_STREAM,IPPROTO_TCP)
RET   socket 3
CALL  setsockopt(0x3,0x2,0x6,0,0x1)
RET   setsockopt -1 errno 22 Invalid argument
PSIG  SIGSEGV SIG_DFL code SEGV_MAPERR<1> addr=0x16 trapno=6

Un saludo.


Título: Re: Argumento 64 bits.
Publicado por: xv0 en 6 Marzo 2013, 16:29 pm
Ya solucioné el problema, la instrucción syscall salva rip en rcx lo "destruye", se tiene que usar r10.

Un saludo.