ih8SecureLock — スクリーンショット制限を無効化するZygiskモジュール

Security

概要

ih8SecureLockは、Zygiskベースのモジュールとして動作し、アプリがスクリーンショットの取得を阻止したり、スクリーンショットの検出イベントを受け取って動作を変えるのを防ぐことを目的としたプロジェクトです。KernelSUまたはMagisk環境で利用可能で、Android 10から16までサポートされると明記されています。ルート権限とZygisk(プロセス内フック)を利用することで、FLAG_SECURE等のスクリーン保護フラグやスクリーンショット検知APIへの介入を行い、制限されているアプリでもスクリーンショットを撮れるようにすることを目指しています。利用時には、対象アプリをdenylistに入れない、対象アプリで「Unmount modules」を無効にするなどの注意点があります。

GitHub

リポジトリの統計情報

  • スター数: 20
  • フォーク数: 0
  • ウォッチャー数: 20
  • コミット数: 8
  • ファイル数: 7
  • メインの言語: C++

主な特徴

  • Zygiskを用いたプロセス内フックによりアプリ側のスクリーンショット制限を回避
  • KernelSU または Magisk 上で動作し、Android 10〜16に対応
  • スクリーンショットの「検知(listening)」をブロックする機能を備える
  • 対象アプリはdenylistに入れないなどの運用注意あり

技術的なポイント

ih8SecureLockは、Zygisk(Magiskのランタイムフックフレームワーク)を利用してアプリプロセスへコードを注入し、スクリーンショット関連の振る舞いを改変するアプローチをとっています。具体的には、アプリがウィンドウに設定するFLAG_SECUREや、システムが提供するスクリーンショット検出API(例えばスクリーンショットイベントの通知や関連サービス呼び出し)に対するフックを行い、アプリ側に「スクリーンショット不可」や「スクリーンショット発生」の通知が届かないように振る舞いを変えることが推測されます。

Zygiskを使う利点は、アプリのプロセス内で直接関数呼び出しやフラグチェックを置き換えられる点にあり、ユーザー空間のAPIレベルで制御可能なためカーネル改変を伴わず比較的互換性を保ちやすい点です。KernelSUでも動作するとあるため、MagiskだけでなくKernelSUのZygisk互換層にも対応した実装と考えられます。

対応範囲がAndroid 10〜16と広めに設定されているため、API差分(FLAG_SECUREの扱いやスクリーンショットの検知機構の進化)に合わせた複数のフックポイントを用意している可能性があります。ただし、システムレベルの権限やセキュリティ強化(例えばProtected ContentやDRMの扱い、最新Androidの強化された保護機構)には限界があり、すべてのケースで完璧に動作するわけではありません。

注意点として、root権限を用いるためセキュリティリスクやアプリの動作保証外になる点、またアプリやサービスの利用規約に抵触する可能性がある点を理解して使う必要があります。READMEでは対象アプリをdenylistに入れない、対象アプリで「Unmount modules」オプションを無効にするなど、Zygiskの設定運用に関する具体的な注意喚起がされています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .github: dir
  • .gitignore: file
  • LICENSE: file
  • README.md: file
  • module: dir

…他 2 ファイル

moduleディレクトリ以下にZygiskモジュールとして必要なバイナリや設定ファイル(module.propやロードスクリプト、あるいはC++で実装されたフックのバイナリ)が配置されている想定です。メイン言語がC++であるため、ネイティブコードによるAPIフックやバイパス処理が行われている可能性が高いです。

まとめ

ルート環境でスクリーンショット制限や検知を回避したい場面に有用なZygiskモジュール(管理・運用に注意)。

リポジトリ情報:

READMEの抜粋:

ih8SecureLock

Prevent apps from blocking and listening to your screenshots with Zygisk.

  • Works with KernelSU or Magisk
  • Works on Android versions 10 - 16
  • Do not put the apps for which you want to take an ss in any kind of denylist and disable ‘Unmount modules’” option for them …