プロセスに独自の C/C++ dll を挿入し、エントリポイントから開始するために利用できるソリューションはありません。プロセス ソケット送信関数をフックし、そこに独自のコードを貼り付ける必要があります。Linuxで利用できますか?
ありがとう!
これを行う一般的な方法はLD_PRELOAD
、プログラムを起動する前に環境変数を設定することです。たとえば、tsocksを参照してください。ただし、セキュリティ上の理由(パスワードをスヌープする可能性があるなど)により、一部のプログラムではこれが無効になることに注意してください。たとえば、gnupgは機能LD_PRELOAD
しません。
実行中のプログラムに注入したい場合、それははるかに困難です。これはで行うことができますptrace
(たとえば、gdbでアタッチしてdlopenを呼び出す)。ただし、アタッチしたときにプログラムがどのような状態であるかがわからないため、信頼性が低くなります。
実行中のプロセスに共有ライブラリを挿入するために使用できるツールであるpyinjectorを作成しました。
インストールするには、単に実行しpip install pyinjector
ます。
使用法:inject <pid> <dll_path>