Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Аналог system в ассемблерном коде

#linux #c #ассемблер #x64 #x86


Какой аналог system в ассемблерном коде? Например, чтобы вывести строку в stdout
под linux x86 надо в eax записать номер системного вызова, в ebx записать код потока(для
stdout это 1), в ecx указатель на строку, в edx длину строки. И потом вызвать прерывание(int
0x80). Итого:

  mov $4,   %eax
  mov $1,   %ebx
  mov $msg, %ecx
  mov $len, %edx
  int $0x80


Как в ассемблере написать аналог вызова C-шной функции system? Без разницы  под x86
или x64. Например, я хочу написать аналог для вызова system("gedit").
    


Ответы

Ответ 1



Запуск файла на исполнение осуществляется через 11-ю функцию 80-го прерывания. Вот на английском SO был вопрос про это: https://stackoverflow.com/questions/9342410/sys-execve-system-call-from-assembly

Комментариев нет:

Отправить комментарий