---
# System prepended metadata

title: 'Module #2'

---

# Module #2

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

## Из чего состоят приложения

Общая схема с некоторыми файлами:

![](https://i.imgur.com/wdnHfj7.png)

Где обычно находятся уязвимости:

- Кастомные URL Schemes
- Интерфейсы для ввода данных
- WebView (уязвимости загрузки контента)
- Сетевые взаимодействия
- Хранение данных в файловой системе
- Защита от обратной разработки


## URL-схема Cydia (cydia://) 

Кастомная схема ранее применяемая для работы с jailbreak устройством.
Сегодня - просто метод открытия Cydia магазина.

## Динамически подгружаемые модули 

Самый распространенный подход к разработке - написание приложений. Для их работы существует отдельный тип файлов, который имеет расширение dylib.

Фреймворки и библиотеки импортируются в Xcode как dylib файлы. 

Все твики, которые доступны для jailbreak устройст это dylib файлы.

Существует 2 вида библиотек:

- статические 
- динамические

`Статические библиотеки` - встраиваются на этапе сборки в приложение. В дальнейшем могут быть выложены в директории приложения.
`Динамические библиотеки` - могут существовать в ОС и загружаться только при обращении к ним

Хоть dylib и содержат код, который может быть выполнен приложением, основное ограничение dylib - файл не может работать как отдельный процесс. Он может быть только подшружен в другие приложения.

## Механизм работы утилит для обхода проверки Jailbreak 

Для проведения исследования приложения до 11 версии ОС было принято использовать твики, которые не позволяли детектировать jailbreak на устройстве.

Эти твики работали на основе обычного анализа самых распространенный приложений.

Jailbreak детектирование большинства приложений основывается на списке характеристик, которые специально или случайно добавляют jailbreak авторы.

Детектирование обычно разбивается на следующие этапы:

- Детектирование файлов jailbreak
- Проверка прав доступа в файловой системе
- Проверка хэндлеров протоколов

Соответственно если провести мониторинг функций, которые реализуют перечисленные выше этапы, то можно снять детектирование.

Самый надежный способ обхода детектирования JailBreak сегодня - использование функций патчинга приложений с помощью инструмента Frida.

## Обнаружение работы отладчика 

Детектирование работы отладчика это один из методов противодействия обратной разработке.
Может быть эффективен в совокупности с детектрованием jailbreak. Практически 60% приложений не используют подобную защиту. 

Из-за этого есть возможность подключаться к приложению и проводить детальный анализ алгоритма.

## Особенности Swift

С точки зрения обратной разработки и изучения алгоритма приложения. Swift имеет более сложную схему взаимодействия с функциями и объектами в памяти.

В этом языке программирования появилось такое понятие как селектор. Благодаря этому работа с перехватом данных может стать более сложной чем при Objective-C. 

Точно ли Swift безопасен для работы с памятью?

![](https://i.imgur.com/2f0fxCp.png)


## Практическое задание

Получить содержимое файлов, которые используются для тестирования. Ответить на вопросы:

- Какие ресурсы использует приложение?
- Есть ли у приложения подпись?
- Какие типы файлов находятся в пакете?

