Вставка кода C в приложение *nix: замена функции

У меня есть новичок, но очень важный для меня вопрос: у меня есть приложение Mac Os X, которое использует углеродный API, но это все еще приложение C++. Мне нужно отладить, какие функции вызываются во время выполнения, а затем сделать патч C++ для замены одной из этих функций.

Настоящая цель: мне нужно зарегистрировать весь текст, напечатанный в окне чата, которое приложение имеет внутри недоступного углеродного представления. Сначала я подумал, что это приложение какао, но это не так, поэтому fscript и imlib не годятся для внедрения кода.

Является ли это возможным? Любые подсказки? Большое спасибо.

Ваше здоровье :)


person flaab    schedule 20.09.2010    source источник


Ответы (1)


Вы можете изучить использование truss, чтобы выяснить, какие системные вызовы выполняются, но я не уверен в пользовательских вызовах. Переменная среды LD_PRELOAD может позволить вам внедрять методы в другие приложения, но методы C++, как правило, имеют различные зависимости в отношении изменения имени и вызова метода, поэтому, вероятно, будет сложно подключить свои собственные.

Можете ли вы просто попросить сопровождающего приложения добавить настоящие хуки, чтобы учесть то, что вам нужно?

person Mark B    schedule 20.09.2010
comment
Спасибо ;-) Я изучал и использовал следующую команду: - person flaab; 21.09.2010
comment
$strings ‹app› Мне удалось выяснить, что строки имеют формат C++ fsprint. Я объявлю свои собственные и внедрим их с помощью LD_PRELOAD: я буду регистрировать все обрабатываемые строки, соответствующие регулярному выражению, и это должно сработать. Я дам вам знать, как это было. Спасибо ;) - person flaab; 21.09.2010
comment
Я имею в виду, что я переобъявлю fsprintf и так далее;) - person flaab; 21.09.2010