Извлечение информации из приложения MAC OS X

У меня простая проблема, буду сразу.

Предположим, у меня запущено стороннее приложение какао, внутри которого есть окно чата. Что ж, мне нужно захватить текст внутри этого окна чата в реальном времени из другого приложения и записать файл журнала в реальном времени с этой информацией.

Я уверен, что выход есть, просто не знаю, с чего начать. У меня есть опыт работы с какао и объективом C, у меня есть несколько приложений в магазине приложений iphone.

Большое тебе спасибо


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


Ответы (2)


Если приложение не поддерживает соответствующие сценарии (например, AppleScript) или не имеет какого-либо внешнего API, вы не сможете этого сделать.

person Paul R    schedule 16.09.2010
comment
Или доступен и, таким образом, может быть добыт с помощью Accessibility API. - person Peter Hosey; 17.09.2010
comment
@Peter: хороший аргумент, хотя я не уверен, сколько приложений может попасть в эту категорию. - person Paul R; 17.09.2010
comment
Привет :-) Спасибо за ответы. Я пытался использовать F-скрипт и imlib для изучения и внедрения кода, но оказалось, что приложение не является приложением какао, а углеродным приложением. Любые идеи? :) Огромное спасибо. - person flaab; 19.09.2010
comment
Я посмотрю на API доступности! Что это может для меня сделать? Спасибо! - person flaab; 19.09.2010

Вкратце: свяжитесь с разработчиком приложения, но не надейтесь.

К сожалению, в наше время защищенной памяти и прочего мы более или менее должны довольствоваться тем, с чем нам дают работать приложения.

Однако: вы не совсем без права защиты. Используя F-Script, вы можете подключиться к процессу и вызвать некоторый контроллер или другое для отправки уведомлений, которые можно записывать и регистрировать.

Изменить: Если, как представляется, это приложение Carbon, вы в порядке:

  1. F-скрипт и подобное вряд ли возможно.
  2. Даже если это так, попытка внедрения в приложение Carbon, то есть приложение на C ++, скорее всего, будет бесполезным упражнением и разочарованием, если не полностью невозможным.
  3. Учитывая, что Carbon устарел (и как!), Приложение вряд ли будет обновлено с помощью подходящего API для такого рода вещей.
  4. Все вышеперечисленное.

Reedit: Один крошечный абер; возможно, хотя и маловероятно, что вы сможете чего-то добиться с помощью сценариев интерфейса, но опять же; Я бы не надеялся.

person Williham Totland    schedule 16.09.2010
comment
Спасибо за ответы. Я пытался использовать F-скрипт и imlib для изучения и внедрения кода, но оказалось, что приложение не является приложением какао, а углеродным приложением. Любые идеи? :) Огромное спасибо. - person flaab; 19.09.2010
comment
Здравствуйте :-) Я попытался заменить некоторые функции C, использующие LD_PRELOAD и библиотеку dlsym для динамической компоновки. Он хорошо работал под Linux для других приложений, но, похоже, не работает для этого приложения. Mac OS X использует другую директиву предварительной загрузки, и GCC не может ее скомпилировать под Mac. Код здесь следующий: - person flaab; 25.09.2010
comment
#define _GNU_SOURCE #include ‹stdint.h› #include ‹stdio.h› #include ‹string.h› #include ‹stdarg.h› #include ‹dlfcn.h› / ** * Функция Interponemos nuestra open * * @param char * filename * @param int flags * / int open (char * filename, int flags) {статический int (* real_open) (char, int) = NULL; если (! real_open) real_open = dlsym (RTLD_NEXT, открыть); // Entero int p = real_open (имя файла, флаги); fprintf (stderr, Abrimos% s) =% i \ n, имя файла, флаги); // Devolvemos return p; } - person flaab; 25.09.2010
comment
Это работало под Linux, но gcc не компилирует его под Mac, и предварительная загрузка не работает! - person flaab; 25.09.2010