2011-10-24 12 views
5

Mi sono divertito con/debug/disassemblando i binari sull'iPhone.decifrazione eseguibile iPhone (MACH-O)

Il primo ostacolo è che i file binari sono crittografati e il simulatore non può leggerli. Questo può essere risolto scaricando il contenuto del file decrittografato da gdb.

La mia domanda riguarda la decrittografia dei binari (che è fatto al volo l'avvio del programma) per tutti i eseguibile Mach-O che hanno l'encryption_id nella sezione LC_ENCRYPTION_INFO, impostato a 1.

  1. c'è un strumento che decrittografa i file per te? Qualche consiglio?
  2. ci sono informazioni disponibili su come funziona il processo? Apparentemente è la crittografia AES ? Quale chiave viene utilizzata? È facile da replicare con il tuo programma ?

Grazie per qualsiasi suggerimento!

+0

Allora, cosa ti stai chiedendo circa è come rompere altri sviluppatori di applicazioni? Non sono sicuro che StackOverflow sia il posto giusto per porre questa domanda poiché il suo obiettivo principale è lo sviluppo di cose, non applicazioni di reverse engineering sviluppate da altri. Penso che potresti essere migliore di un sito di hacker o pirateria. –

+2

Davvero? Ho pensato che l'overflow dello stack avesse anche un suono di reverse engineering! (come in straripamento del tuo stack con troppi dati ...) Su una nota più seria, penserei che questa sia una buona conoscenza generale per tutti gli sviluppatori, e non una sorta di tabù underground. – pracheta986919

+0

user986919 ha ragione, non puoi implementare la sicurezza nella tua app senza sapere come un hacker proverebbe a romperla. Se un'app compilata in genere può essere decodificata, occultarla ancora di più. – Daniel

risposta

7

questioni etiche circa l'hacking/cracking/etc a parte, cerchiamo di discutere i dettagli:

  • In OS X la decrittografia binario viene eseguito da un Non Steal MacOS X.Kext (affettuosamente conosciuto come DSMOS).
  • In iOS la decodifica binaria viene eseguita da FairPlay kext.

    In entrambi i casi, il caricatore Mach-O del kernel è responsabile di ciò. Se hai davvero devi entrare nei dettagli, è il cercapersone di Apple Protect che gestisce la decodifica. In gergo XNU un "cercapersone" è un componente responsabile della presa delle pagine VM e del loro recupero da un backing store (swap, file mappato in memoria, ecc.). E 'l'Apple Protezione Pager, che invita la kext (uno dei precedenti due)

    C'è un grande libro che copre le specifiche del kernel - http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651

    Come lei ha affermato in modo corretto, questa crittografia è facilmente sconfitto - su un dispositivo jailbroken (o un PC con privilegi di root) è possibile utilizzare le API di Mach VM per leggere l'immagine decrittografata. Questo è effettivamente menzionato nel libro sopra, con uno strumento di esempio per farlo (tra gli altri trucchi VM). In alternativa, Stefan Esser ha uno strumento semplice che decodifica i binari iniettando un semplice .dylib nello spazio degli indirizzi del processo quando viene caricato, utilizzando DYLD_INSERT_LIBRARIES. github.com> stefanesser> dumpdecrypted.

speranza che questo aiuta

TG