Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отслеживание вызовов системных функций 
:(
    Опции темы
cypher
Дата 30.5.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 8.4.2007

Репутация: нет
Всего: нет



Здравствуйте! 
Нужно отслеживать вызов системной функции fork() (или exit(), kill(), mkdir(), chdir()..). тоесть каждый раз когда вызывается функция fork() делать запись в текстовый файл (тима демона который фиксирует все вызовы функции fork()...). Поиском пользовался ничего не нашол по сабжу. Не пойму даже где копать, может есть средства которые позволяют следить за вызовами функций...?
PM MAIL   Вверх
MAKCim
Дата 30.5.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



cypher
есть по крайней мере 2 варианта
1. ptrace() + PTRACE_SYSCALL (трассировка системных сервисов)
2. инжект кода в трассируемый процесс и сплайсинг элементов секции .plt

можно еще попробовать покопать valgrind


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xvr
Дата 2.6.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



А утилита strace не устроит отца русской демократии?  smile 
PM MAIL   Вверх
Maka6er
Дата 3.6.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 27.2.2007
Где: Киев

Репутация: нет
Всего: 3



А что за система? Если BSD то это через sysent делается.
PM MAIL   Вверх
andrew_121
Дата 9.6.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 3
Всего: 33



Мне как-то нужно было заменить вызовы "open(), close(), read(), write(), ...".
Я писал модуль ядра. Все работало.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
MAKCim
Дата 9.6.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(andrew_121 @  9.6.2008,  15:46 Найти цитируемый пост)
Я писал модуль ядра

ну и зря  smile 
кстати, каким образом ты узнавал адрес sys_call_table? или модуль был под 2.4.x?

Это сообщение отредактировал(а) MAKCim - 9.6.2008, 16:11


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
andrew_121
Дата 9.6.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 3
Всего: 33



Цитата

ну и зря   

Почему ?

Цитата

кстати, каким образом ты узнавал адрес sys_call_table? или модуль был под 2.4.x?

Да.
А в 2.6.х это как-то иначе ?
Расскажи плиз...

Это сообщение отредактировал(а) andrew_121 - 9.6.2008, 17:38


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
MAKCim
Дата 9.6.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(andrew_121 @  9.6.2008,  17:37 Найти цитируемый пост)
Почему ?

можно обойтись без модуля ядра  smile 

Цитата(andrew_121 @  9.6.2008,  17:37 Найти цитируемый пост)
А в 2.6.х это как-то иначе ?
Расскажи плиз...

в 2.6.x sys_call_table не экспортируется
обходные пути есть, но они не всегда будут работать


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
andrew_121
Дата 9.6.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 3
Всего: 33



MAKCim
Цитата

можно обойтись без модуля ядра  smile 

Как ?
Можно по подробней...плз.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
MAKCim
Дата 9.6.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(andrew_121 @  9.6.2008,  17:45 Найти цитируемый пост)
Как ?
Можно по подробней...плз. 

пост №2


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1138 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.