#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
Комментариев нет:
Отправить комментарий