Разработчики проекта Frida (http://www.frida.re/), в рамках которого развивается платформа для динамической трассировки и анализа приложений, представили (http://www.frida.re/news/2014/08/25/frida-1-6-3-released/) релиз 1.6.3 и новый графический отладчик CryptoShark (https://github.com/frida/cryptoshark), основанный на технологиях Frida. По решаемым задачам Frida напоминает DTrace в пространстве пользователя, но для написания скриптов для трассировки и обработки статистики выполнения приложения применяется язык JavaScript. По сути Frida является аналогом Greasemonkey для нативных программ, позволяя контролировать работу программы во время её выполнения также, как Greasemonkey даёт возможность контролировать обработку web-контента.
Трассировка программ поддерживается на платформах Linux, Windows, OS X и iOS. Простейшие сценарии трассировки могут выполняться (http://www.frida.re/docs/quickstart/) при помощи утилиты frida-trace (например, "frida-trace -i 'recv*' -i 'read*' Skype"), для более сложных сценариев предлагается подключать обработчики на языке JavaScript. Подобные обработчики имеют полный доступ к памяти процесса, могут перехватывать обращение к функциям и вызывать реализованные в приложении функции из JavaScript-кода. Таким образом в обработчиках может быть организовано двунаправленное взаимодействие с процессом.
Доступность Python-биндинга (https://github.com/frida/frida-python) позволяет использовать язык Python для создания утилит и надстроек над Frida API (скрипты, контролирующие выполнение программы создаются только на JavaScript). Одним из перспективных направлений использования Frida является создание средств для анализа и разбора проприетарных криптографических протоколов и API.
CryptoShark является кроссплатформенной графической надстройкой над Frida, предоставляющей удобный интерфейс для отладки произвольных процессов с использованием техники динамической рекомпиляции. Работа осуществляется на уровне машинного кода, без необходимости наличия отладочной информации или исходных текстов. Поддерживается установка тегов на вызовы API, отображение данных о вызываемых функциях в режиме реального времени, подстановка вызовов для детального журналирования действий.
<center><iframe width="640" height="360" src="//www.youtube.com/embed/hzDsxtcRavY?rel=0" frameborder="0" allowfullscreen></iframe></center>
Базовые компоненты Frida написаны с использованием языков Си и Vala. Для обработки JavaScript применяется движок V8. Отладчик CryptoShark написан на языке C++ и использует для построения интерфейса библиотеку Qt5, а для дизассемблирования - фреймворк Сapstone (https://github.com/aquynh/capstone). Исходные тексты всех компонентов проекта распространяются (https://github.com/frida/) под свободной лицензией wxWindows Library Licence (http://en.wikipedia.org/wiki/WxWindows_Library_Licence#License) (вариант LGPL, не накладывающий ограничений на условия распространения бинарных сборок производных работ).
URL: http://www.frida.re/news/2014/08/25/frida-1-6-3-released/
Новость: http://www.opennet.dev/opennews/art.shtml?num=40455