【发布时间】:2016-02-13 17:40:41
【问题描述】:
我是 64 位 x86 编码的新手,但我运行的是 Ubuntu 14.04(值得信赖),并且我有一段非常简单的 64 位代码,我使用 as 组装。我得到的输出有奇怪的权限和文件类型。
当我跑步时:
as file.s
我得到一个文件a.out 具有 770 权限。
执行时出现此错误:
bash: ./a.out: 无法执行二进制文件:执行格式错误
当我跑步时:
file ./a.out
我明白了:
./a.out:ELF 64 位 LSB 可重定位,x86-64,版本 1 (SYSV),未剥离
我使用的汇编代码是:
.section .data
.LC0:
.string "/bin/sh"
.LC1:
.string "/bin/sh"
.LC3:
.quad .LC1, 0
.text
.globl _start
_start:
.LFB0:
pushq %rbp
movq %rsp, %rbp
movq $59,%rax # System Call to execve
movq $.LC0, %rdi # Pass program to execute
movq $.LC3, %rsi # Pass command line arguments
syscall
movl $0, %eax
popq %rbp
ret
【问题讨论】:
标签: assembly x86 ubuntu-14.04 x86-64 gnu-assembler