В настоящее время я изучаю методы перехвата мобильных приложений и наткнулся на некоторые фреймворки, такие как Xposed (Android), Frida (Android и iOS) и Cycript (iOS).
Документация по Xposed и Frida довольно хорошо объясняет, как именно они это делают. Xposed указывает, что манипулирует двоичным файлом, запуская процесс Zygote и загружая дополнительный файл JAR, который помогает перехватывать методы. В документации Frida поясняется, что он использует ptrace (в средах Linux) для присоединения к процессу, выделения и заполнения загрузчика, который загружает поток для запуска файла .so, содержащего агент frida, в двух словах, если я правильно понял.
Я не смог найти полезную документацию о стратегии, которой придерживается Cycript. Я знаю, что он построен поверх Cydia Substrate, который и выполняет фактическую перехватку. Я также не смог найти подробностей о том, как именно Substrate выполняет это.
Я также понимаю, что в iOS среда выполнения target-c позволяет манипулировать временем выполнения, поскольку оно ориентировано на время выполнения.
Кто-нибудь знает, как именно Cycript / Cydia Substrate работает для подключения/внедрения в приложения?
Заранее спасибо.