2011-08-29 61 views
1

我有一個應用程序使用Apple鍋爐板代碼加載CFPlugin,而不是問題。在插件中插入OS X API

該插件有一個bug - 和別人的二進制...

的插件使得某些呼叫到蘋果系統框架。如果我可以攔截插件想要對框架進行的調用,那麼一切都會好起來的。我甚至不需要再調用'真正'的版本。基本上我想調用我的版本,而不是蘋果的基於CF的例程。

攔截對框架調用的調用在我的應用程序的代碼中工作,但該插件仍然調用「真正的」框架調用而不是攔截。

我不是一個真正的dyld專家,但似乎插件,雖然在我的應用程序的地址空間,以某種方式加載自己的Apple Framework版本?

當我加載插件等,讓它調用我的攔截代碼時,我能做些什麼嗎?

回答

0

1)做dyld的在一個單獨的libFix.dylib插在Amit的書中描述:http://osxbook.com(涉及__interpose DATA部分)

2)使用DYLD_INSERT_LIBRARIES = /路徑/到/ libFix.dylib之前啓動應用程式

這個人的評論可能也有幫助: http://www.mikeash.com/pyblog/friday-qa-2009-01-30-code-injection.html#comment-3fb6e4b8cf65ec984e7836e2b86a2875

+0

謝謝。我不會測試發佈的解決方案 - 但它確實聽起來不錯!如果有人在未來絆倒在這裏,請注意 - (像我一樣)。再次感謝。 –

相關問題