2011-10-20 21 views
10

デバイスのルートパーティションにファイルを書き込もうとしています。脱獄アプリなので、/アプリケーションにインストールされます。 NSFileManagerを使用してルートファイルシステムに書き込むと、書き込みが失敗し、"アクセスが拒否されました"エラーが発生します。iOSでNSFileManager(脱獄)のroot権限を取得

私のアプリがrootで実行されていないようです。しかし、/ Applicationsにインストールされています。私のアプリはどうやってrootになれるの?

答えて

18

アプリはルート以外のディレクトリにアクセスするにはルートとして実行する必要があります。 OptimoとSaurikでこれについて議論したところ、私は最終的にroot特権を得る正しい方法を見つけました。 main()関数で

  1. setuid(0);setgid(0);
  2. は、通常アプリを構築加えます。
  3. アプリケーションバンドルに実行可能ファイルのコピーを作成します。
  4. を開き、元の実行ファイルと、このスクリプトとその内容を置き換えます

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

    が直接アプリはiOSの上で失敗したルートを起動します。したがって、アプリケーションのメイン実行可能ファイルを、ルート実行可能ファイルを起動するスクリプトで置き換えます。

  5. 端末では、アプリのバンドルに移動します。

  6. chmod 0775元の実行可能ファイルとchmod 6775コピーされた実行可能ファイル。
  7. アプリケーションバンドルを/アプリケーションにデバイスにコピーします。 SpringBoardを再起動してください。アプリが起動しない場合は、デバイス上で手順5 & 6を繰り返します。 ?
+0

あなたは以降の手順3でのみコーディングを通じて行われますどのように私はこのパスにNSArray *はパス= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory、NSUserDomainMask、YES)を見つけることができます\ –

+0

こんにちは、案内してくださいすることができます。 NSString * docDirectory = [パスobjectAtIndex:0];私はデバッグできないので – HDNZ

+0

私はiOS 6で動作しますが、アプリケーションバンドルを/アプリケーションに移動すると、それはバネボードに表示されません:( – dvkch

関連する問題