2015-06-03 62 views
0

目前我正在使用C++編寫的一些應用程序插件 - 在Windows上我注入DLL進程,捕獲接口和做我的工作 - 但我的問題是 - 我怎麼做類似的東西Linux呢?我寧願不做編輯可執行代碼注入運行進程。linux動態鏈接庫注入

+0

你看過dlopen&company嗎? – sfjac

+0

@sfjac你是什麼意思?如果我沒有錯,它用於將動態庫加載到當前進程中,但是我想將庫A注入進程B中,該進程正在運行 – mlgpro

回答

1

如果你能控制的過程中啓動,只需使用LD_PRELOAD強制加載旁邊的可執行文件庫,其他庫可能遮蔽符號(即鏈接到二進制):

LD_PRELOAD=/path/to/libfoo.so myapplication 

繼是一個真實的用例添加一個用v412,支撐層,只v4l1的應用程序,通過截取ioctl

LD_PRELOAD=/usr/local/lib/libv4l/v4l1compat.so camorama 

要注入符號插入到已經運行的進程,結賬出來this answer

+0

,並且如果要運行時附加,請使用下面解釋的騙局:http://stackoverflow.com/answers/27137527/overload-symbols-of-running-process-ld-preload-attachchement – milianw

+0

@milianw,是的,我剛剛注意到(答案!),並且已經添加到我的答案... –

+0

哦 - 對不起。由於某種原因沒有看到它。 – milianw