“ sys_open”文件时正确的权限是什么?

时间:2019-02-09 19:03:36

标签: linux assembly x86

我正在尝试在Linux上使用x86程序集读取文件的内容。问题是,我们应该在$res = array(); foreach($array as $sub) { $res = array_merge($res, $sub); } $keys = array_keys($res) var_dump($keys); 中添加什么-sys_open的“权限”寄存器。

我以前使用过C的edx;但没有任何“权限”字段。我正在尝试读取属于可执行文件的同一所有者的文件。文件的权限设置为open()0400)。我尝试使用-r--------打开文件:空(0),edx0666。它们全部返回“ -13”到0400,似乎是eax

示例代码:

EACCES

mov eax, 0x5; //sys_open push 0x6362612f //file name in hex, let's say "/abc" mov ebx, esp; //filename to ebx xor ecx, ecx; //O_RDONLY mov edx, 0666o; //permissions in octal for nasm int 0x80; //call it 通常会(或在这种只读情况下)打开文件?文件的当前权限是空的还是任意的?

谢谢!

1 个答案:

答案 0 :(得分:0)

man 2 open

  

如果未指定O_CREAT或O_TMPFILE,则将忽略模式。

因此,打开要读取的现有文件并不重要,您放入edx中的内容。问题的原因还有其他原因。