如何在Linux中使用x64处理器进行ShellCode。

时间:2016-04-09 14:49:22

标签: shellcode

我正在通过this tutorial工作,但它是为32位处理器编写的。我在64 bit linux syscall找到了这个说明。我可以编译,运行和objdump它。

我的问题是,为什么以下代码会产生分段错误。

/* shellcodetest.c */

char code[] = "\x48\x31\xc0\xb0\x3c\x48\x31\xff\x0f\x05";
int main(int argc, char **argv){
    int (*func)();
    func = (int (*)()) code;
    (int)(*func)();
}

/*    
exitt:     file format elf64-x86-64    

Disassembly of section .text:

0000000000400078 <_start>:
  400078:   48 31 c0                xor    %rax,%rax
  40007b:   b0 3c                   mov    $0x3c,%al
  40007d:   48 31 ff                xor    %rdi,%rdi
  400080:   0f 05                   syscall 
*/

供参考系统调用60(\ x3c)是exit()。所以这应该只是调用exit(0);

0 个答案:

没有答案