|
Модераторы: xvr |
|
andrew_121 |
|
|||
Кодофей Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Здравствуйте.
Нужно подменить вызов таких функций как open(), lstat[64](), stat[64](), read(), write(), mkdir(), chdir(), getcwd() для определенного процесса. Интересует мнение других. Как бы вы реализовали эту задачу. Спасибо! Это сообщение отредактировал(а) andrew_121 - 8.8.2009, 13:19 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
andrew_121 |
|
|||
Кодофей Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Вот что нашел.
http://www.insidepro.com/kk/043/043r.shtml http://gazette.linux.ru.net/lg81/sandeep.html http://gazette.linux.ru.net/lg83/sandeep.html http://gazette.linux.ru.net/lg85/sandeep.html По идее то что нужно. Может есть еще какие-то варианты? Не считая модулей ядра. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
кажется есть переменная среды LD_PRELOAD_LIBRARY (или что-то вроде того), которая заставляет ld.linux.so сначала загрузить указанную библиотеку перед той, которую требует программа. Так как линковка осуществляется последовательно, то можно создав библиотеку с нужными функциями, подменить на них стандартные вызовы у необходимых процессов.
|
|||
|
||||
andrew_121 |
|
|||
Кодофей Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
bsa, Да, я так понял, это самый правильный вариант.
Пробую. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
MAKCim |
|
|||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
не прокатит, если нужно работать с существующим процессом тут можно заюзать ptrace + PTRACE_SYSCALL (если функции, которые нужно подменить, соответсвуют системным вызовам) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
andrew_121 |
|
|||
Кодофей Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Нет. Процесс я сам запускаю. В этом методе есть недостатки? Какой метод предпочитаемый?
...не понял. Добавлено через 4 минуты и 24 секунды Что почитать порекомендуете? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
MAKCim |
|
|||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
ну все вышеперечисленные тобой функции соответствуют системным вызовам а если, к примеру, тебе нужно подменить функцию gethostbyname, то ptrace ты не сможешь заюзать, т. к gethostbyname - обычная функция libc
первый просто реализуется, но не полностью надежный второй труднее в реализации + ограничение, которое я озвучил -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
andrew_121 |
|
|||
Кодофей Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
А можно микропримерчик к примеру, как для команды cd подменить вызов chdir? Это сообщение отредактировал(а) andrew_121 - 15.8.2009, 16:07 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
andrew_121 |
|
|||
Кодофей Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Ну хоть ссылку на что-то подобное дайте Буду дико признателен.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
cd может быть внутренней командой оболочки. Поэтому нужно подменять именно у оболочки.
|
|||
|
||||
andrew_121 |
|
|||
Кодофей Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
т.е. в Линуксе? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
MAKCim |
|
|||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
cd реализуется через chdir -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Loki |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 244 Регистрация: 9.7.2006 Репутация: нет Всего: нет |
а зачем подменивать? что-бы спрятать что-то? или это система лицензирования такая?)
|
|||
|
||||
andrew_121 |
|
|||
Кодофей Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Loki, Есть бинарник, но нет сорцов. Нужно заставить его использовать другие имена файлов/каталогов.
Добавлено через 38 секунд Нужно было. Вопрос решен. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |