2011-10-20 12 views
10

Sto provando a scrivere il file nella partizione di root del dispositivo. È un'app Jailbreak quindi è installata in/Applicazioni. Quando si scrive sul filesystem di root usando NSFileManager la scrittura fallisce con un errore "Autorizzazione negata".Ottenere i permessi di root su iOS per NSFileManager (Jailbreak)

Sembra che la mia app non sia in esecuzione come root. È installato in/Applicazioni però. Come può la mia app diventare root?

risposta

18

È vero, l'applicazione deve essere eseguita come utente root per accedere a directory non mobili. Dopo aver discusso di questo con Optimo e Saurik ho finalmente trovato il modo giusto per ottenere i privilegi di root.

  1. Nella funzione main() aggiungere setuid(0); e setgid(0);
  2. costruire l'applicazione normalmente.
  3. Creare una copia del file eseguibile nel pacchetto di app.
  4. Aprire il file eseguibile originale e sostituire il suo contenuto con questo script:

    #!/bin/bash 
    dir=$(dirname "$0") 
    exec "${dir}"/COPIED_EXECUTABLE_NAME "[email protected]" 
    

    Direttamente lanciare un app radice fallisce su iOS. Pertanto sostituiamo l'eseguibile principale dell'app con uno script che avvia l'eseguibile root.

  5. Nel terminale, accedere al pacchetto dell'app.

  6. chmod 0775 il file eseguibile originale e chmod 6775 il file eseguibile copiato.
  7. Copia il pacchetto di app in/Applicazioni su un dispositivo. Riavvia SpringBoard e dovresti essere a posto. Se l'app non si avvia, ripeti il ​​passaggio 5 & 6 sul dispositivo.
+0

può si prega di guida come il punto 3 in poi avverrà attraverso la codifica solo \ –

+0

Ciao, dove posso trovare questo percorso NSArray * percorsi = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, SI); NSString * docDirectory = [percorsi objectAtIndex: 0]; perché non riesco a eseguire il debug di – HDNZ

+0

Io lavoro su iOS 6, se sposto il pacchetto di app su/Applicazioni non appare sul trampolino :( – dvkch

Problemi correlati