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

В настоящее время я изучаю методы перехвата мобильных приложений и наткнулся на некоторые фреймворки, такие как 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 работает для подключения/внедрения в приложения?

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


person Phoebus    schedule 21.10.2016    source источник


Ответы (1)


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

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

person Phoebus    schedule 21.10.2016
comment
ты действительно уверен в этом? Насколько я знаю, DYLD_INSERT_LIBRARIES предназначен только для iOS, Android использует LD_PRELOAD. - person Krypton; 16.01.2017
comment
Согласно книге Джонатана Здзиарски «Взлом и защита приложений iOS», стр. 207, раздел «Полное заражение устройства», Substrate работает таким образом на iOS. - person Phoebus; 16.01.2017