Как вы получаете системные вызовы из приложения и совпадают ли они с функциями, используемыми в исходном коде?

Небольшая модификация ответа @Kusalananda, передача вывода выражения grepв cut, кажется, отлично работает в моей оболочке zsh.

grep -o -E -e 'sid:[^;]+' -e 'reference:cve,[^;]+' file | cut -d':' -f2 | cut -d',' -f2
1
02.03.2021, 19:07
2 ответа

В большинстве случаев вы не найдете явных системных вызовов в исходном коде программы. :Приложения пишутся с вызовами библиотеки времени выполнения соответствующего языка, и именно эта библиотека заботится о вызове ядра. Многие языковые библиотеки времени выполнения делегируют эту ответственность, в свою очередь, полагаясь на библиотеку C.

Между библиотечными функциями C и системными вызовами нет даже одного -–-одного соответствия. Некоторые функции библиотеки C вообще не используют никаких системных вызовов; другие используют несколько. Отображение даже меняется от одной архитектуры к другой — Linux имеет ряд специфичных для архитектуры -системных вызовов — и фактически используемые системные вызовы могут сильно зависеть от работающего ядра и библиотеки C, например. поскольку ядро ​​добавляет новые системные вызовы, а их поддержка добавляется в библиотеку C.

2
18.03.2021, 22:27

Загрузите исходный код installwatch, часть пакета checkinstall, и измените installwatch.

installwatchиспользует трюк LD_PRELOADдля перехвата ВСЕХ системных вызовов. Прочтите man ld.so.

1
18.03.2021, 22:27

Теги

Похожие вопросы