Tsar Posted January 10, 2011 Report Posted January 10, 2011 Здравствуйте, подскажите пожалуйста каким образом можно подключить свою библиотеку в уже скомпилированное statically-linked приложение, либо внедрить ее в уже запущенный экземпляр этого приложения? Заранее спасибо. Quote
Sleeping Daemon Posted January 10, 2011 Report Posted January 10, 2011 Tsar писал(а) Mon, 10 January 2011 14:24 Здравствуйте, подскажите пожалуйста каким образом можно подключить свою библиотеку в уже скомпилированное statically-linked приложение, либо внедрить ее в уже запущенный экземпляр этого приложения? Заранее спасибо. В общем - для статики никак. Quote
Tsar Posted January 10, 2011 Author Report Posted January 10, 2011 Но может быть, есть какой-то способ внедрить библиотеку в уже запущенный экземпляр приложения, используя механизм ptrace, например, вызвав внутреннюю функцию _libc_dlopen_mode, которая входит в состав libc и уже находится в приложении. На самом деле были попытки организовать такой вызов, но функция при любых параметрах возвращает ошибку с текстом "cannot open shared object file". Но, может, все же есть какие-то шансы. Еще есть идея изменить программу, переписав весь машинный код в заранее подготовленную dynamically-linked программу. А уже потом подгружать библиотеку с помощью стандартных средств типа переменной окружения LD_PRELOAD. Может быть, это окажется реальным? Quote
gogi Posted January 10, 2011 Report Posted January 10, 2011 Трудно понять, чего вы добиваетесь. У вас нет исходников и при этом вы хотите изменить функционал бинарной программы подменой библиотеки? Если так, то очень оригинально, и Вам написали, что при статической сборке это вряд ли возможно. Разве что вызовы ядра будете подменять? ))) Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.