2011-02-05 13 views
0

私はLD_PRELOADを使って、C/C++で書かれた関数を上書きして傍受することができます。 MySQLソースコードで書かれた関数を傍受することは可能ですか?LD_PRELOAD with MySQL

たとえば、(監査の理由で)すべてのMySQL接続を含むログファイルが必要です。 私は)(にmysql_real_connectを傍受う Cの関数は、MySQLのソース、次のようである: LD_PRELOAD = my_intercepting_connect.so mysqlの

それは(理論的に)動作しますか?誰かこれをやったのですか?

答えて

3

LD_PRELOADを使用すると、アプリケーションが取り出したシンボルを共有ライブラリから取得できます。バイナリ境界を越えない関数呼び出しを傍受することはできません。したがって、アプリケーションがmysqlに動的にリンクされている場合は、アプリケーションが静的にリンクされているときにmysql_real_connectコールを傍受することができます。また、mysql lib内の呼び出しをインターセプトすることもできません。