TangerineTangerine —это тулза для анализа Windows Phone приложений. Она основана на XAPSpy и позволяет делать три вещи. Во-первых, автоматизировать всю рутинную работу с ХАР — файлами: распаковку, подписывание, упаковку, разворачивание на девайсе или эмуляторе. Во-вторых, Tangerine позволяет проводить базовый статический анализ кода. После открытия приложения Tangerine выводит информацию из манифеста приложения: общую информацию, список возможностей и так далее. Также производится декомпиляция исходного кода, можно посмотреть структуру кода. Более того, Tangerine проводит анализ кода методов и указывает на методы, в которых используется потенциально опасный API: работа с файловой системой, работа с сетью и работа с криптографией.

И наконец, Tangerine позволяет проводить динамический анализ кода. Это достигается двумя способами. Ты можешь логировать весь стек вызовов, с именами функций, параметров

и их значениями. Также ты можешь исполнять свой собственный код. Все эти вещи настраиваются, ты можешь указать, какие конкретно методы надо анализировать.

Теперь посмотрим, как работает Tangerine. Во-первых, динамический анализ осуществляется при помощи инструментами CIL — кода. Во-вторых, логирование работает при помощи консоли эмулятора. С ее помощью можно увидеть всю информацию, которую приложение выводит в консоль.

Итак, у тебя есть приложение, которое ты хочешь проанализировать. Ты открываешь его в тулзе, добавляешь хуки на интересующие методы: логирование вызовов, выполнение нужного кода и так далее. Затем Tangerine переподписывает проинструментированные сборки, упаковывает в новый ХАР — файл и разворачивает на эмуляторе или девайсе. Затем ты работаешь с приложением и видишь вывод вызовов методов и как приложение работает с учетом добавленного в него кода.

Конечно, у Tangerine есть ограничения. Некоторые из них были сделаны намеренно (например, Tangerine не работает с системными библиотеками). Некоторые ограничения могут быть преодолены в дальнейшем, а некоторые нет. В частности, невозможно анализировать Windows Phone 8 приложения, взятые из магазина или с устройства, поскольку сборки содержат MDIL или нативный код (в случае телефона). Таким образом, если ты захочешь проанализировать WPe — приложение, ты должен будешь взять приложение до того, как оно попало в магазин. Но это тоже временная проблема, и мы работаем над ее разрешением в данный момент.