Как Cycript / подложка работает, чтобы подключиться к процессу?

В настоящее время я изучаю методы подключения мобильных приложений и наткнулся на некоторые фреймворки, такие как Xposed (Android), Frida (Android и iOS) и Cycript (iOS).

Документация о Xposed и Frida довольно хорошо объясняет, как именно они это делают. Xposed заявляет, что манипулирует двоичным файлом, начиная процесс Zygote и загружая дополнительный JAR-файл, который помогает в подключении методов. Документация Frida объясняет, что она использует ptrace (в средах Linux) для подключения к процессу, выделяя и заполняя загрузчик, который загружает поток для запуска.so файла, содержащего агент frida, в двух словах, если я правильно понял.

Я не смог найти полезную документацию о стратегии, которой придерживается Cycript. Я знаю, что он построен поверх Cydia Substrate, который выполняет фактическое подключение. Я не смог найти подробностей о том, как именно Субстрат выполняет это.

Я также понимаю, что в iOS время выполнения target-c позволяет манипулировать временем выполнения, поскольку оно ориентировано на время выполнения.

Кто-нибудь знает, как именно Cycript / Cydia Substrate работает, чтобы подключить / внедрить в приложения?

Заранее спасибо.

1 ответ

Решение

Он выяснил, что, по-видимому, работает, добавив DYLD_INSERT_LIBRARIES в манифест запуска программы и, таким образом, каждый раз, когда приложение запускается, он загружает вредоносную полезную нагрузку, загружая динамическую библиотеку.

Тем не менее, есть ли другие методы, как выполнять перехват / манипуляции во время выполнения на Android и iOS?

Другие вопросы по тегам