Ich versuche, Security Tubes execve Tutorial (http://hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html) in 64bit Asm nachzuahmen. Ich bin mir nicht sicher, woher der Busfehler kommt. Ich bin in der GDB durch die App gegangen, aber der Fehler trat erst auf, nachdem ich den Frame verlassen hatte. Wenn jemand weiß, was passiert, würde ich gerne von dir hören.Bus Fehler in OS X x86_64 in Execve Anruf
.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
xor %rax, %rax
push %rax
movabsq $0x68732f6e69622f2f, %rdi
push %rax
mov %rsp, %rsi
push %rdi
mov %rsp, %rdx
mov $0x2000059, %rax
syscall
Für eine Sache, 'push' ist 64 Bit in 64-Bit-Modus, mit einem 32-Bit-Zeichen sofort verlängert . Sie landen also tatsächlich mit 2f 2f 62 69 00 00 00 00 6e 2f 73 68 00 00 00 00 auf dem Stapel. Stattdessen könnten Sie 'movabsq $ 0x68732f6e69622f2f,% rax; push% rax' – Jester
Danke @Jester. Immer noch den Busfehler bekommen. Aktualisiert meinen Code, um Ihre Anweisungen zu reflektieren. – JLegendre
Sie haben 'rdi' geladen, aber 'rax' gedrückt? – Jester