当我打开并写入可执行文件时,它不会执行

时间:2017-08-17 19:33:34

标签: linux assembly nasm x86-64

我有一个NASM程序集程序,运行时会创建一个可执行文件并执行它。

section .data  
    File db "Open",0  
section .text  
    global _start  

_start:  

mov rax, 2 ; Open the file/ Create it
mov rdi, File
mov rsi, 65
mov rdx, 777
syscall
push rax

mov rdi, rax ; Write to the file
mov rax, 1
mov rsi, 0x600300 ; Location of where the appended data is
mov rdx, 900
syscall

mov rax, 3 ; Close the file
pop rdi
syscall

mov rax, 59  ; Execute the file
mov rdi, File
syscall

mov rax, 60 ; Close out of the program
mov rdi, 0
syscall

我尝试在关闭文件之前执行文件,然后得到相同的输出(没有)。我写的文件是正确格式的可执行文件,如果我运行./打开它打印出Hello。如果我只做一个像

这样的简单程序
section .data
    File db "Open", 0

section .text  
    global _start  

_start:  

mov rax, 59  ; Execute the file
mov rdi, File
syscall

它按照我的意愿执行程序。为什么当我先打开文件并写入文件时它不会执行它?为了澄清我附加了正在写入0x300的可执行文件,并且写入的文件是可执行的。

0 个答案:

没有答案