Fondamentalmente ogni app che scaricate ha la sua parte binaria (mach-o) criptata (o codificata, come preferite) "on-the-fly" dai server Apple con crittografia a chiave pubblica, ed è legata ad un singolo apple id.
Quando si cerca di eseguire quel .IPA su un altro dispositivo (non loggato con l'apple id dell'acquirente), quel dispositivo non avrà la chiave per decriptare il binario mach-o.
Lo "decifrano" creando un binario non criptato che può essere letto da qualsiasi dispositivo. Ora, prima di spiegare come fanno, vorrei dire che il kernel dell'iPhone (e dell'iPad/iPod touch blah blah, mi riferirò all'iPhone per semplicità's sake) ha una protezione che impedisce al codice non firmato (o non criptato) di essere eseguito. Quindi solo il codice firmato può essere eseguito su un iPhone stock. Per evitare questo problema, quando si esegue il jailbreak di un iPhone, il kernel verrà modificato in modo che il codice non firmato possa essere eseguito.
Passo finale: come si crea un binario non firmato? Ci sono vari metodi per farlo, il più semplice che conosco è:
1. Ottenere l'offset di inizio della crittografia nel binario con otool
2. Collegare gdb all'app da craccare
3. Con gdb, scaricare la memoria dell'app
4. Sostituire il binario originale con il dump nel file IPA (IPA è un semplice file zip rinominato)
Ovviamente, per crackare un'app dovete essere l'acquirente, se avete un IPA legittimo che appartiene a un apple id a cui non avete accesso, non potete fare nulla.