Вставьте OS X API в плагин - PullRequest
1 голос
/ 29 августа 2011

У меня есть приложение, которое загружает CFPlugin, без проблем, используя код панели Apple.

Плагин содержит ошибку - и это чей-то бинарный файл ...

Плагин делает несколько вызовов в Apple System Framework. Если бы я мог перехватывать вызовы, которые плагин хочет сделать к фреймворку, то все было бы хорошо. Мне даже не нужно тогда называть «настоящие» версии. По сути, я хочу назвать свою версию вместо рутины Apple, основанной на CF.

Перехват вызовов для вызова структуры работает в моем коде в моем приложении, но плагин по-прежнему вызывает «настоящий» вызов структуры вместо моего перехвата.

Я на самом деле не эксперт в области разработки, но похоже, что плагин, хотя и находится в адресном пространстве моего приложения, каким-то образом загружает свою собственную версию Apple Framework?

Есть ли какая-то магия, которую я могу сделать при загрузке плагина и т. Д., Чтобы он вызывал мой код перехвата?

1 Ответ

0 голосов
/ 15 мая 2012

1) выполнить вставку DYLD в отдельный libFix.dylib, как описано в книге Амит: http://osxbook.com (включая раздел __interpose DATA)

2) используйте DYLD_INSERT_LIBRARIES = / path / to / libFix.dylib до запуска вашего приложения

комментарий этого парня также может помочь: http://www.mikeash.com/pyblog/friday-qa-2009-01-30-code-injection.html#comment-3fb6e4b8cf65ec984e7836e2b86a2875

...