系统调用从文件直接读取到堆栈,nasm

时间:2014-06-03 11:28:17

标签: nasm cpu-architecture

我正在尝试在32位NASM中写入PIC代码。 为此,我需要从文件中读取4个字节的数量并检查它是否是ELF文件。 我这样做了:

eax有文件描述符,所以我做push eax,并检查它不是-1,一切都很好。 但是现在,我想使用读取,读取4个字节,但由于我需要它作为PIC代码,我必须直接读入堆栈作为局部变量。我这样做了(使用宏系统调用):read [ebp-4 (fd)], [ebp-8] (to this place in stack), 4 (4 bytes)但是,返回的值是-14,因为它没有读取任何内容。

我用缓冲区制作了一个数据部分,做了同样的事情,但是读入了缓冲区并且工作正常。

所以,显然,我无法直接阅读叠加。我该怎么做才能维护PIC代码?

open Filename, RDWR, 0777
push eax ;backup fd, now its at place [ebp-4]
cmp eax, -1 ;if not a good fd
je exit
mov eax, 3 ;sys read
mov ebx, [ebp-4]
mov ecx, [ebp-8]
mov edx, 4
int 0x80

0 个答案:

没有答案