In che modo Cycript / Cydia Substrate si aggancia ai processi?

1

Attualmente sto facendo qualche ricerca sulle tecniche di aggancio delle applicazioni mobili e ho trovato alcuni framework come Xposed (Android), Frida (Android e iOS) e Cycript (iOS).

La documentazione su Xposed e Frida è abbastanza buona che spiega come lo stanno facendo esattamente. Stati di Xposed per manipolare il binario che avvia il processo Zygote e carica un file JAR aggiuntivo che aiuta ad agganciare i metodi. La documentazione di Frida spiega che usa ptrace (in ambienti Linux) per collegarsi a un processo, allocando e popolando un bootstrapper che carica un thread per avviare un file .so contenente l'agente frida, in poche parole, se ho capito bene.

Non sono riuscito a trovare documentazione utile sulla strategia perseguita da Cycript. So che è costruito sopra Cydia Substrate che fa il vero aggancio. Non sono riuscito a trovare dettagli su come esattamente Substrate compie questo.

Comprendo inoltre che su iOS il runtime oggettivo-c consente la manipolazione del runtime in quanto è orientato al runtime.

Qualcuno sa esattamente come funziona Cycript / Cydia Substrate per agganciare / iniettare nelle applicazioni?

Grazie in anticipo.

    
posta Phoebus 21.10.2016 - 23:17
fonte

2 risposte

1

Ha capito che funziona apparentemente aggiungendo DYLD_INSERT_LIBRARIES al manifest di launchd del programma e quindi ogni volta che l'applicazione viene avviata carica il payload dannoso caricando la libreria dinamica.

Ancora, ci sono altre tecniche su come eseguire operazioni di hooking / manipolazione in runtime su Android e iOS?

    
risposta data 22.10.2016 - 00:48
fonte
0

Cycript utilizza cynject nel substrato mobile link

Cynject utilizza la porta del task mach per iniettare e creare un thread nel processo di destinazione: link

mach_port_t self(mach_task_self()), task;
_krncall(task_for_pid(self, pid, &task));
    
risposta data 24.05.2018 - 03:29
fonte

Leggi altre domande sui tag