Android есть dev/binder
также для слоев сообщение ответственный. Можно ли слушать сообщения? Я знаю, что они должны быть декодированы, но, как я могу получить это сообщение. Например, если приложение отправит сообщение, оно станет Geolocation. У меня также есть root на моем устройстве Android.Как слушать dev/binder?
ответ
Короткие: Нет, это не должно быть возможно даже с помощью корня.
Существует не так много информации о Binder подробно в сети, но есть некоторые, особенно о безопасности. См. this или to point 3.8 here. Вы также можете прочитать источник драйвера ядра и источник openbinder.
Вы можете декодировать большинство сделок Binder, которые идут мимо, используя эту версию Трассирования: https://github.com/adetaylor/strace-android/tree/android
имеют усовершенствование для декодирования ioctl
вызовов, которые как процессы делают запросы в драйвер ядра Binder. Убедитесь, что вы используете ветку android
, иначе вы не сможете воспользоваться этими изменениями.
Вы должны иметь возможность построить это, используя автономную инструментальную цепочку NDK. См. docs/STANDALONE-TOOLCHAIN.html
в документации по Android NDK.
Отлично, но, к сожалению, я не смог скомпилировать его с помощью NDK, после исправления кучи ошибок компилятора (несоответствий заголовков и т. Д.), Я остался с ошибкой компоновщика, после чего у меня возникла проблема. Есть ли у вас готовый статический бинарный файл? – domen
Выполнение этого с помощью codeourcery toolchain было намного проще, без исправлений заголовков и т. Д. Я в основном следил за инструкциями от: http: // muzso.hu/2012/04/21/how-to-compile-strace-for-use-on-an-android-phone-running-a-arm-cpu Обратите внимание, что make-dist - это место для установки переменных, добавьте '- -host', и если что-то пошло не так, прокомментируйте 'trap', чтобы легко отладить его. – domen
Если вы для установки нового ядра, код драйвера связующего (drivers/staging/android/binder.c
) имеет очень хорошие возможности отладки, в то числе условных сообщений и функций, которые могут печатать связующий сделок и т.д.
В частности, вы будете получить различные виды отладочных сообщений в журнале ядра, установив binder_debug_mask
используя соответствующую комбинацию из следующих переписчиков:
BINDER_DEBUG_USER_ERROR
BINDER_DEBUG_FAILED_TRANSACTION
BINDER_DEBUG_DEAD_TRANSACTION
BINDER_DEBUG_OPEN_CLOSE
BINDER_DEBUG_DEAD_BINDER
BINDER_DEBUG_DEATH_NOTIFICATION
BINDER_DEBUG_READ_WRITE
BINDER_DEBUG_USER_REFS
BINDER_DEBUG_THREADS
BINDER_DEBUG_TRANSACTION
BINDER_DEBUG_TRANSACTION_COMPLETE
BINDER_DEBUG_FREE_BUFFER
BINDER_DEBUG_INTERNAL_REFS
BINDER_DEBUG_BUFFER_ALLOC
BINDER_DEBUG_PRIORITY_CAP
BINDER_DEBUG_BUFFER_ALLOC_ASYNC
Можно также посыпать несколько print_binder_*
функций, которые включены в binder.c
в Стра теги по всему коду. Например, print_binder_buffer()
или print_binder_transaction()
. Вероятно, вы захотите сделать это условным, основанным на определенном uid или pid, поскольку в противном случае будет много вещей, летающих в журнале.
@Adrian, некоторая хорошая работа w.r.t проблема была сделана другими разработчиками/исследователями, чтобы вы могли использовать их результаты.
Прежде всего, я бы рекомендовал смотреть на большой работы Джонатан Левин (ака Technologeeks), а именно его книги на Android внутренностей, которые недавно стали свободными и могут быть доступны на веб-сайте компаньона книги : newandroidbook.com. Оттуда вы получите ссылки, описание и примеры использования в
- bindump
, что является простой производной от команды
service
, которая получает дескриптор системы обслуживания выбора, а затем проверяет ИТС собственную запись в каталоге/sys/kernel/debug/binder/proc
. Поскольку все данные отладки связующего являются читаемыми по всему миру, вы также можете запустить этот инструмент на невращающихся устройствах. - jtrace, увеличенная версия
strace
, чьи одним из преимуществ по сравнению сstrace
являетсясвязующего сообщением разбор (Автоматического определения).
Еще одна интересная работа, сделанная по Opersys (с Karim Ягмур), что, безусловно, стоит отметить, и, глядя на это
- Binder Explorer
Этот инструмент работает как приложение или вместе с HTML GUI, чтобы показать графическое представление соединений в режиме реального времени.
Я посмотрел на jtrace, и, похоже, это именно то, что я хочу. Но как этот парень заглядывал в сообщения связующего, не меняя сам код связующего? – Adrian
Я читал бесплатный PDF-файл парня, и ответ заключается в том, что он позволяет debugfs, который является тем же самым результатом, что и перекомпиляция libbinder: для обеспечения безопасности выводится «безопасный» поток связующего. Спасибо за ответ. Это просто усилило то, что слежение за связующим невозможно без модификации андроида. – Adrian
Почему снова и снова, не неправильные ответы получить одобрение, как правильно?
Jtrace - не следует путать с дампом корзины - не требуется никаких изменений в Android, что-то никогда. И он может отслеживать сообщения связующего - с ограничением на то, что вы должны быть одним из конечных пунктов.
Bindump использует debugfs, но это показывает только конечные точки. @Adrian - Боюсь, вы ошиблись.
Jtrace ловушки sys звонки входы и выходы - и затем разрешает связующие сообщения, проверяя память процесса (используя ptrace (2)). Если у вас есть ptrace (2) в вашем ядре (что вы делаете, потому что debugserver глупо нуждается в нем), а вы root, вы можете отслеживать сообщения. Опять же - вы должны быть на конечной точке.
И @Luminger - в то время как на предмете - только потому, что не может найти информацию, не означает, что информации нет. Существует много информации о Binder на NewAndroidBook.com - помимо книги, посмотрите ссылку на презентацию Binder.
- 1. Как слушать ACTION_MANAGE_OVERLAY_PERMISSION допускается
- 2. Как слушать JTextArea
- 3. Как продолжать слушать onClick?
- 4. OkHttp как слушать таймаут?
- 5. Как глобально слушать actionevents
- 6. как слушать передачу UDP?
- 7. ios - как слушать загрузку
- 8. слушать webView.loadurl
- 9. как слушать на ImageView VisibiltyChanged
- 10. C++ как слушать HTTP-запросы
- 11. Как слушать изображение на экране?
- 12. Как я могу слушать уведомления?
- 13. AngularJS: Как слушать DOM-события?
- 14. Как слушать при нажатии данных
- 15. Как слушать INotifyDataErrorInfo используя CollectionView
- 16. Как всегда слушать SMS-андроид
- 17. как слушать аппаратные события Android.
- 18. Как слушать сообщения электронной почты
- 19. как слушать трансляцию в угловом?
- 20. Как слушать команду на bash?
- 21. Как слушать изменения в коллекции?
- 22. JS: как слушать выполнение функции?
- 23. Android: как слушать прокрутку событий?
- 24. Как слушать предупреждение батареи Android
- 25. Слушать/Unlisten событий Java
- 26. javascript: слушать сервер
- 27. Слушать анимацию один раз?
- 28. Blessed - слушать любую клавишу
- 29. Android слушать BackButton longclick
- 30. Сделать клиент слушать сервер
Спасибо. Это было довольно интересно. Но можете ли вы сказать мне, в чем причина этого. Я хочу просто послушать, что приложение отправляет связующему (в байт-коде). Может быть, с strace или что-то в этом роде. – Aprel
В основном это работает как любой другой linux api, который «персонализирован». Вы просто увидите, что вам разрешено видеть, на основе userid/groupid. У него просто хороший контроль доступа, чтобы все было нормально =) – Luminger
ОК я понял. И еще один вопрос: посмотреть, как приложения и linux-ядро взаимодействуют друг с другом (также, если я вижу только небольшую часть этого сообщения). Какой инструмент я могу использовать для этого? – Aprel