2010-02-09 22 views
0

我在MacOS X和其他一些函數下攔截(插入)了dlopen函數。 我看到我的應用程序如何在日誌中調用dlopen,但在動態庫被截斷後沒有找到與打開/讀取功能相關的任何內容。系統如何訪問和讀取動態庫文件?我查看了dyld的源代碼,它確實在dlopen上調用open/read。 任何人都可以讓我知道我錯過了什麼嗎? 截獲的功能: dlopen,打開,讀取,寫入,訪問,所有stat功能,關閉等。[macosx]是否打開dlopen調用並閱讀函數?

謝謝,任何幫助,高度讚賞。

+0

你怎麼攔截?與strace? – 2010-02-09 08:08:25

+0

否,使用dyld插入,通過DYLD_INSERT_LIBRARIES環境變量。 – zbencik 2010-02-09 09:50:00

回答

0

在dlopen()成功後,通常會調用dlsym()來查找庫中的函數等。

+0

是的,我明白那一部分。 問題是系統如何從文件系統中讀出庫。我需要從特殊的存儲容器中加載應用程序庫。我在我的庫上看到了dlopen調用,但沒有打開/讀取函數 – zbencik 2010-02-09 09:52:21

+0

在這種情況下,您可能只需拉動達爾文源代碼並查看它,不是嗎? http://www.opensource.apple.com/ – 2010-02-09 10:08:13