|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 12 Jul 2004 15:55:41 To : Sergey Krinitsin Subject : Re: gettimeofday -------------------------------------------------------------------------------- >>> Sergey Krinitsin wrote: VN>> Glibc скорее всего для неё компилирует из шаблона ассемблерный VN>> переходник, VN>> аналогично прочим сисколлам. Переходник просто складывает аргументы в VN>> регистры (или оставляет на стеке), грузит номер сисколла в %eax VN>> и вызывает int 0x80. По возврату проверяет CF и ставит errno по VN>> необходимости. SK> Похоже что так, но это осложняет дело ;( SK> Как можно перехватить данную функцию для определенного приложения? SK> Если бы можно было модифицировать glibc, то достаточно было заюзать SK> LD_PRELOAD, но это похоже весьма нетривиальное дело :( А что нетривиального-то? Запусти с LD_PRELOAD на нужную библиотеку. Вот тебе метод как делается смещение вперёд на час: int gettimeofday(struct timeval *tp, struct timezone *tzp) { int r; static int (*real_func)(struct timeval *, struct timezone *) = NULL; if(!real_func) { real_func = dlsym(RTLD_NEXT,"gettimeofday"); if(!real_func) abort(); } if((r=gettimeofday(tp,tzp))==-1) return r; *tp.t_sec += 3600; return 0; } Делаешь so'шку с такой функцией, грузишь через LD_PRELOAD и вперёд... -netch- --- ifmail v.2.15dev5.3 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/22383f4c275fa.html, оценка из 5, голосов 10
|