2016-08-24 23 views
15

Zajmuję się tworzeniem aplikacji ukierunkowanych na urządzenia iOS z jailbreak. Ma to pomóc w automatyzacji niektórych zadań. Potrzebuję utworzyć prosty plik tekstowy (w rzeczywistości plik .lua) w/private/var/mobile/Library. Oczywiście, debugger rzuca wyjątek odmowy dostępu. Aplikacja nosi teraz nazwę "CreateFile" do celów testowych.Uprawnienia roota dla aplikacji iOS

próbowałem następujące czynności w celu uzyskania dostępu do konta root:

  1. Budowanie aplikacji normalnie.
  2. Utwórz kopię pliku wykonywalnego w pakiecie aplikacji.
  3. Otwórz oryginalny plik wykonywalny i zastąpienie jej treści z tego skryptu:

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

    Bezpośrednio uruchomienie aplikacji korzeń nie na iOS. Dlatego zastępujemy główny plik wykonywalny aplikacji skryptem, który uruchamia główny plik wykonywalny.

  4. W terminalu przejdź do pakietu aplikacji.

  5. chmod 0775 oryginalny plik wykonywalny i chmod 6775 skopiowany plik wykonywalny.
  6. Skopiuj pakiet aplikacji do/Applications na urządzenie. Zrestartuj SpringBoard i powinieneś być gotowy. Jeśli aplikacja się nie uruchomi, powtórz krok 5 & 6 na urządzeniu.

Za pomocą tej metody mogę pomyślnie zainstalować aplikację w folderze/Applications i uruchomić ją, jednak oczekuję, że nadal nie mam uprawnień roota, ponieważ gdy tylko aplikacja spróbuje operacji zapisu, ulegnie awarii.

Jeśli ktokolwiek może rzucić trochę światła na tę sytuację, byłbym bardzo wdzięczny!

Edit:

Czy jakieś dodatkowe testy na poradę @creker „s. Kiedy próbuję utworzyć plik w dozwolonym katalogu, takim jak dokumenty aplikacji, tworzy się dobrze bez żadnych problemów. Z tego powodu jestem pewien, że tworzenie pliku nie powoduje awarii i że jest to wyłącznie niedostępna ścieżka do folderu.

Również w poradniku @creker próbowałem zainstalować aplikację na/Applications bez żadnych skryptów uruchamiania. Aplikacja ulega awarii po otwarciu w ten sposób. Jeśli wykonam chmod aplikacji wykonywalnej na 775 po instalacji, aplikacja otworzy się, ale nadal ulega awarii podczas próby utworzenia pliku.

Zajrzałem do rejestru syslog z programu do zgłaszania awarii. tutaj jest linia awarii:

System.UnauthorizedAccessException: Access to the path "/private/var/mobile/Library/test.txt" is denied 

Nadal mamy nadzieję, że uda się rozwiązać problem, wszelkie pomysły są mile widziane!

+0

Nie potrzebujesz uprawnień root'a, aby utworzyć plik w '/ var/mobile/Library'. '/ var/mobile' to katalog domowy użytkownika' mobilnego'. O ile nie jesteś ograniczony przez reguły piaskownicy, katalog ten jest w pełni dostępny. – creker

+0

Następnie muszę być ograniczony przez reguły piaskownicy, ponieważ dostaję odmowę dostępu, gdy próbuję pisać do tego katalogu. Czy kroki, by to obejść, są inne? – Kikootwo

+1

Nie, po prostu musisz znajdować się w katalogu '/ Applications'. Nie potrzebujesz nawet skryptu uruchamiania. Może twoja aplikacja ulega awarii z innego powodu. – creker

Odpowiedz

0

Uzyskanie dostępu do roota na iOS jest coraz trudniejsze, gdy zwiększają się środki bezpieczeństwa, nawet gdy dochodzi do jailbreaku. Konto root ma coraz mniej uprawnień w każdym wydaniu, ale nadal można korzystać z tego konta. Możesz to zrobić, upewniając się, że plik binarny aplikacji jest własnością root: wheel, a następnie ma ustawiony bit SETUID.

chown root:wheel app_binary 
chmod +s app_binary 

a następnie w aplikacji dodać następujący niej skorzystać

@autoreleasepool 
{ 
    // Set uid and gid 
    if (!(setuid(0) == 0 && setgid(0) == 0)) 
    { 
     NSLog(@"Failed to gain root privileges, aborting..."); 
     exit(EXIT_FAILURE); 
    } 

    // Launch app 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class])); 
    /* you'll need to modify this return line to match your app */ 
} 

Potrzebny będzie również skrypt uruchamiania, aby skorzystać z tego w iOS powyżej wersji 6

#!/bin/bash 
myAppPath=$(dirname "$0") 
exec "$myAppPath"/myApp_ "[email protected]" 
Powiązane problemy