36

アプリをクラッキングから保護することに関するこの質問を見て、トップの回答者が、カーネルの内部不均衡によってデバイスがジェイルブレイクされたかどうかを確認できることについて言及していることに気付きました。もう少し調べてみると、カーネル アーキテクチャの概要ガイドを発見し、Mach-BSD カーネルと対話する方法についての知識を持っています。私が知る必要があるのは、私が探しているものは何ですか? デバイスがカーネルのコンテキストでジェイルブレイクされたときに変化する何らかのキーまたは内部状態はありますか?

明確にするために、私はコードを探しているわけではありません (これらのことを自分で行う方法を知っています)。リンクされた質問で回答を見てきました。それらが機能することは知っていますが、すべてのカーネルルートについて疑問に思っています。これは、キーを変更またはplistする可能性のあるディレクトリを検索する代わりに、より一般的で効率的なチェック方法のようです名前が異なる場合があります。

また、著作権侵害のためにアプリの一部の機能を無効にするつもりはありません (条件に基づいてメッセージまたは何かを表示するだけです)。

4

2 に答える 2

24

すべての「最新の」カーネル パッチは、 comex のパッチに基づいています。

パッチが適用されている主なものは次のとおりです。

  • security.mac.proc_enforce
  • cs_enforcement_disable (kernel and AMFI)
  • PE_i_can_has_debugger
  • vm_map_enter
  • vm_map_protect
  • …</li>

ああ、サンドボックス パッチもあります。これらすべてのパッチについて詳しく知りたい場合は、 iOS Hacker's Handbookをご覧になることをお勧めします。

編集:デバイスがジェイルブレイクされているかどうかを確認する簡単なアイデアを思いつきましたが、Apple がこれらの機能の使用を許可しているかどうかはわかりません。

  1. mach_vm_allocate() を使用してメモリを割り当てます

  2. そのページの保護を mach_vm_protect() で VM_PROT_READ | に変更します。VM_PROT_EXECUTE | VM_PROT_COPY

  3. ストック iOS ではアプリ内からの VM_PROT_EXECUTE が許可されていないため、これは失敗します。ジェイルブレイクされていない場合は mach_vm_protect() の戻り値を確認しますが、デバイスがジェイルブレイクされている場合は成功します。

于 2012-05-05T22:16:45.907 に答える
2

約 1 年前、saurik はHacker News にコメントを書き、「ジェイルブレイクがデフォルトでインストールする「ベスト プラクティス」パッチ」のリストを掲載しました。詳細についてはそのコメントを読むことをお勧めしますが、ここに彼の発言のプレビューがあります(私が切り取った多くの説明があります):

  1. AFC2: モバイルとして /var/mobile/Media だけでなく、root としてすべての / に USB 経由でアクセスできます。

  2. fstab / rw: / を読み書き可能にマウントします。

  3. fstab /var suid dev: ユーザー データ パーティションで setuid 実行可能ファイルとデバイス ノードを許可します。

  4. codesign: 誰にも署名されていないコードの実行を許可します。

  5. codehash: コードの「破損した」ページを含むプロセスの実行を許可します。

  6. rw->rx: メモリのページを書き込み可能から実行可能に変更することをサポートします。

  7. rwx: メモリーを書き込みと実行のために同時にマークできるようにします。

  8. サンドボックス: 通常のサンドボックス ルールではなく、Unix のアクセス許可に基づいて、プロセスがサンドボックスの外部にあるファイルにアクセスできるようにします。

  9. crazeles: 脱獄したデバイスで iBooks が正しく動作しない原因となる FairPlay DRM チェックを無力化する、planetbeing によるばかばかしいほど複雑なハック。

于 2013-08-30T05:01:51.803 に答える