2016-08-24 4 views
15

jailbroken iOSデバイスを対象とするアプリケーションを開発しています。これは、いくつかのタスクの自動化を支援することです。/private/var/mobile/Libraryに単純なテキストファイル(実際は.luaファイル)を作成する必要があります。明らかに、デバッガはアクセス拒否例外をスローします。テストの目的で、今のところ「CreateFile」という名前のアプリケーションがあります。iOSアプリケーションのルート特権

私は、ルートアクセス権を取得するには、次の手順を試みている:

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

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

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

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

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

この方法を使用すると、アプリケーションを/ Applicationsフォルダに正常にインストールして起動することができますが、アプリが書き込み操作を試みると直ちにクラッシュするため、私はまだルート権限を持っていないことが予想されます。

誰かがこのような状況に少しでも光を当てることができれば、私は非常に感謝しています!

編集:

@crekerのアドバイスでいくつかの追加テストを行いましたか?私がアプリケーションのドキュメントのように許可されたディレクトリにファイルを作成しようとすると、それは何の問題もなく問題なく作成されます。このため、ファイルの作成がクラッシュの原因ではなく、アクセスできないフォルダパスのみであることは確かです。

また、@crekerのアドバイスでは、起動スクリプトを使わずにアプリケーションを/ Applicationsにインストールしようとしました。アプリはこのように開いたときにクラッシュします。インストール後にアプリケーション実行可能ファイルを775にchmodすると、アプリケーションが開かれますが、ファイルを作成しようとするとクラッシュします。

私はクラッシュレポーターからsyslogを調べました。ここでクラッシュラインは次のとおりです。

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

はまだ問題を解決することを望んで、任意のアイデアは大歓迎です!

+0

上のiOSでこれを利用するために起動スクリプトが必要になります

@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 */ } 

それを活用するために、次の'/ var/mobile/Library'にファイルを作成するためのルート権限は必要ありません。 '/ var/mobile'は' mobile'ユーザのホームディレクトリです。サンドボックスルールによって制限されない限り、そのディレクトリには完全にアクセスできます。 – creker

+0

次に、そのディレクトリに書き込もうとすると、アクセス拒否違反が発生するため、サンドボックスルールによって制限される必要があります。それを回避するための措置は違いますか? – Kikootwo

+1

いいえ、あなたは '/ Applications'ディレクトリにいなければなりません。あなたは起動スクリプトも必要ありません。アプリが別の理由でクラッシュする可能性があります。 – creker

答えて

0

脱獄してもセキュリティ対策が強化されるため、iOSでのルートアクセスを取得することはますます困難になっています。 rootアカウントは各リリースでより少ない権限を取得していますが、このアカウントを使用することは可能です。これは、あなたのアプリケーションのバイナリがroot:wheelによって所有されていることを確認し、SETUIDビットがセットされていることを確認することによって行うことができます。

chown root:wheel app_binary 
chmod +s app_binary 

、その後、あなたのアプリケーションに追加します。また、バージョン6

#!/bin/bash 
myAppPath=$(dirname "$0") 
exec "$myAppPath"/myApp_ "[email protected]" 
関連する問題