2012-02-04 48 views
0

爲任何可用的解決方案可用於注入進程自己的C/C++ DLL並從入口點開始,我需要鉤子進程套接字發送函數並粘貼我自己的代碼。它在Linux上可用嗎?Linux注入C/C++ DLL

謝謝!

+1

你在尋找'export LD_PRELOAD = your_so'還是完全不同的東西? – 2012-02-04 13:02:46

+0

@skwllsp:我認爲PO詢問注入現有流程。 Kracken將輸出修改爲套接字,您可以使用PCap庫 – 2012-02-04 13:11:06

+0

在運行時注入英特爾的PIN。這是一個隱藏架構細節的DBI框架。除此之外,你可以看到Valgrind。 – gon1332 2016-01-12 21:17:03

回答

4

執行此操作的典型方法是在啓動程序之前設置LD_PRELOAD環境變量。例如參見tsocks。請注意,由於安全原因(它可以窺探密碼等),某些程序會禁用此功能,例如, gnupg防止LD_PRELOAD工作。

如果你想注入一個正在運行的程序,它會更加困難。它可以用ptrace完成(例如,用gdb連接並調用dlopen)。但它是不可靠的,因爲當你附加時你不知道程序是什麼狀態。