iOS

[Swift]iOSの脱獄チェックを行う。

投稿日:2018年12月25日 更新日:

はじめに

こんにちはsuzukiです。本日はiOSの脱獄について、まとめて行きたいと思います。普段のアプリ開発ではあまり意識をせずに開発を行っていましたが、クライアントの要望で、脱獄を行なっているユーザーにはアプリが使用できなくしてほしいとのことです。脱獄を実際に行なったことはないため調査しながらまとめております。

脱獄とは

脱獄とは大まかに説明するとAppleがiPhoneにかけている様々な制限を解除し、端末のカスタマイズを行うことができるらしいです。デメリットとしては正規の状態とは判断されなくなるためAppleのサポートを受られなくなります。
開発者からするとiOSというOSの中で動くアプリを提供しているのであり、脱獄している端末に対して、動作保証外で起動できない状態にしたいです。
個人的な見解ですが、脱獄はしない方が無難かなと思っております。

脱獄のチェックについて

本題の脱獄のチェックについて説明して行きます。

Cydiaのチェック

脱獄後Cydiaというアプリケーションでアプリの配布が行われる為、Cydiaを使用できる状態であれば脱獄されている状態という判断を行なっても良さそうです。
Cydiaが端末上に存在するかURLSchemeを使ってチェックしましょう。
URLSchemeの設定方法なのですが、こちらのサイトがわかりやすいです。
まずはInfo.plistを編集してLSApplicationQueriesSchemesの項目を追加してcydiaをアプリから呼べるようにします。

こちらの設定でアプリからCydiaアプリのスキームを呼び出す準備ができました。それでは実際に呼び出せるかを確認するコードを記述します。
Cydiaのファイルパスが存在するかとCydiaを呼び出せるかを確認しています。

上記のコードでtrueが返却されればCydiaが存在するということを検知できます。
しかしながら脱獄をしているユーザーが全てCydiaを利用しているとは限りません。そのためCydiaのチェックだけでは十分と言えません(ウィルスと一緒で十分と言える状態はないのかもしれませんが、、、)
他の方法でのチェックもしてみましょう。

パスのチェック

iOSを普通に使っている範囲では本来作成されない箇所にファイル/フォルダが作成されている場合は脱獄されていると判断できます。
しかしながら脱獄する方法で作成されるパスが異なるため何をチェックすればいいとは明言できません。
今回はこちらの記事を参考にパスのチェックをしました。

こちらでパスのチェックをいたしました。
後ほど触れますが、こちらのチェックの一部がiOSシミュレーターで起動すると引っかかります。

書き込み権限のチェック

アプリから本来アクセス権限がないファイルをアクセス、編集できる場合は脱獄されていると判断できます。

iOSシミュレーターのチェックを行わない。

Passのチェックを行うとiOSシミュレーターはチェックに引っかかり脱獄されていると判断されてしまいます。
そのためiOSシミュレーターでは脱獄のチェックを行わないように設定を行います。

  • Cydiaのチェック
  • パスのチェック
  • 書き込み権限のチェック

iOSシミュレーター以外で上記のチェックが行われます。
Appleの審査もあるためiOSシミュレーターは動く状態にした方が良さそうです。

コードまとめ

念のため今回のコードをこちらに記述いたします。
isJailBrokenを呼び出して脱獄の判断を行えます。
念のため関数名は変更した方がいいかもしれません。

さいごに

最後までお付き合いありがとうございます。
途中でも記述しましたがチェックすべき内容は日々変わっていくかと思います。あまり自分も知見がないため、フレームワークなどあればそちらに任せたい内容ですね。

おすすめ書籍

詳解 Swift 第4版
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

【Swift】WKWebViewでタップしたURLを取得する。

1 はじめに2 WKWebViewについて3 WKWebViewの基本実装4 ナビゲーションにタイトルを追加5 ロングタップの禁止6 特定のリンクの場合はブラウザを起動して表示7 さいごに はじめに ...

【Swift】ITMS-90726で警告された際の対応

1 はじめに2 警告について3 RXTestについて4 Carthageの設定の確認5 おまけ5.1 Carthage削除6 さいごに7 おすすめ書籍 はじめに こんにちはsuzukiです。最近アプリ ...

Apple製のフレームワークCombineを触ってみた

1 はじめに2 Combineとは3 Publishers3.1 Future4 Subscribers4.1 sink4.2 assign5 Operators5.1 Prepend5.2 Appe ...

iOSでFirebase Authenticationを実装してみる その1

1 はじめに2 Firebaseプロジェクトの設定3 新規ユーザー登録4 既存ユーザーのログイン5 匿名ログイン6 エラーメッセージ7 最後に8 おすすめ書籍 はじめに はじめまして、Yossyです。 ...

swift

[Swift3] SwitchとEnumを使ってSectionやCellを指定する

1 はじめに1.1 環境2 Enumの用意3 Tableの用意4 Cellの返却にEnumを使用する5 さいごに はじめに どうも、はじめです。 今回はSectionやCellの指定にSwitchとE ...

フォロー

blog-page_side_responsive

2018年12月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。