Как 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?