Добавление файла с int 0x80 (бит доступа?) - PullRequest
0 голосов
/ 08 марта 2012

В моем учебнике по NASM, "Руководство по программированию сборки в Linux" от Dandamundi, системный вызов 5 (открытие файла) описывается следующими параметрами.

EAX = 5
EBX = file name
ECX = file access mode (read, write, read/write)
EDX = file permissions

Это не проясняет, какие коды доступа (восьмеричные, я предполагаю) на самом деле. 0200Q и 02000Q предположительно не работают. Я пытаюсь добавить содержимое одного файла в другой файл.

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Я думаю, что это системный вызов sys_open, поэтому параметры должны сопоставляться один к одному с параметрами open (2) :

Аргумент flags должен включать один из следующих режимов доступа: O_RDONLY, O_WRONLY или O_RDWR.Эти запросы открывают файл только для чтения, только для записи или для чтения / записи, соответственно.Кроме того, ноль или более флагов создания файлов и флагов состояния файлов могут быть побитовыми или в флагах.Флаги создания файла: O_CREAT, O_EXCL, O_NOCTTY и O_TRUNC....

0 голосов
/ 08 марта 2012

После просмотра /usr/include/asm/unistd_32.h становится ясно, что системный вызов номер 5 преобразуется в open. В свою очередь, просмотр man 2 open говорит о том, что второй параметр должен включать O_RDONLY (00), O_WRONLY (01) или O_RDWR (02). Он также может включать в себя ряд дополнительных флагов путем ИЛИ их вместе, что задокументировано на указанной странице руководства.

В вашем случае вы, вероятно, хотите иметь возможность записи в файл и добавления к нему. Следовательно, O_WRONLY | O_APPEND было бы желательно. После просмотра заголовочных файлов эта операция возвращает значение 02001, и это то, что вы должны поместить в регистр ecx.

...