小编Ste*_*e M的帖子

汇编程序给出错误:/a.out:无法执行二进制文件:Exec格式错误

我是 64 位 x86 编码新手,但我运行的是 Ubuntu 14.04(可靠),并且我有一段非常简单的 64 位代码,我使用as进行汇编。我得到的输出具有奇怪的权限和文件类型。

当我跑步时:

as file.s
Run Code Online (Sandbox Code Playgroud)

我得到一个具有 770 权限的文件a.out

当我执行它时,我得到这个错误:

bash: ./a.out: 无法执行二进制文件: Exec 格式错误

当我跑步时:

file ./a.out 
Run Code Online (Sandbox Code Playgroud)

我得到:

./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 …
Run Code Online (Sandbox Code Playgroud)

x86 assembly x86-64 gnu-assembler ubuntu-14.04

5
推荐指数
1
解决办法
3150
查看次数

标签 统计

assembly ×1

gnu-assembler ×1

ubuntu-14.04 ×1

x86 ×1

x86-64 ×1