Tsar Posted January 10, 2011 Report Share Posted January 10, 2011 Здравствуйте, подскажите пожалуйста каким образом можно подключить свою библиотеку в уже скомпилированное statically-linked приложение, либо внедрить ее в уже запущенный экземпляр этого приложения? Заранее спасибо. Quote Link to comment Share on other sites More sharing options...
Sleeping Daemon Posted January 10, 2011 Report Share Posted January 10, 2011 Tsar писал(а) Mon, 10 January 2011 14:24 Здравствуйте, подскажите пожалуйста каким образом можно подключить свою библиотеку в уже скомпилированное statically-linked приложение, либо внедрить ее в уже запущенный экземпляр этого приложения? Заранее спасибо. В общем - для статики никак. Quote Link to comment Share on other sites More sharing options...
Tsar Posted January 10, 2011 Author Report Share Posted January 10, 2011 Но может быть, есть какой-то способ внедрить библиотеку в уже запущенный экземпляр приложения, используя механизм ptrace, например, вызвав внутреннюю функцию _libc_dlopen_mode, которая входит в состав libc и уже находится в приложении. На самом деле были попытки организовать такой вызов, но функция при любых параметрах возвращает ошибку с текстом "cannot open shared object file". Но, может, все же есть какие-то шансы. Еще есть идея изменить программу, переписав весь машинный код в заранее подготовленную dynamically-linked программу. А уже потом подгружать библиотеку с помощью стандартных средств типа переменной окружения LD_PRELOAD. Может быть, это окажется реальным? Quote Link to comment Share on other sites More sharing options...
gogi Posted January 10, 2011 Report Share Posted January 10, 2011 Трудно понять, чего вы добиваетесь. У вас нет исходников и при этом вы хотите изменить функционал бинарной программы подменой библиотеки? Если так, то очень оригинально, и Вам написали, что при статической сборке это вряд ли возможно. Разве что вызовы ядра будете подменять? ))) Quote Link to comment Share on other sites More sharing options...
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.