HPatch — 非rootで動作するLSPosed派生のパッチフレームワーク
概要
HPatch(リポジトリ名は LSPatch を示唆)は、LSPosed をベースにした「非rootで動作する」Xposed互換フレームワークの実装です。目的は、従来のXposedが要求していたroot権限やシステム領域の改変を不要にし、ユーザー空間でアプリの実行時にメソッドをフックして挙動を変更できる仕組みを提供することです。リポジトリは主にJavaで記述され、CIビルドの設定や多言語対応のためのCrowdin連携、サブモジュール管理など、実運用を見据えた構成になっています。非root環境での互換性や、LSPosedとの連携を重視した設計が特徴です。
リポジトリの統計情報
- スター数: 8
- フォーク数: 2
- ウォッチャー数: 8
- コミット数: 4
- ファイル数: 22
- メインの言語: Java
主な特徴
- 非root環境での実行時パッチ(Xposed互換のフック)を目指す実装。
- LSPosed をベースに拡張・互換性を確保した設計。
- Javaベースで記述され、Android向けの開発フローに適合。
- CI(GitHub Actions)やCrowdinによるローカライズ連携を備える運用向けリポジトリ構成。
技術的なポイント
HPatchはLSPosedの設計思想を引き継ぎつつ、root不要でのフック実現を狙うため、プロセス内で動作するパッチ適用の仕組みやロード時フックの戦略が重要になります。Javaで書かれている点から、AndroidアプリのクラスローダやDVM/ARTのランタイムに対する介入を行い、既存のAPIやメソッド呼び出しに対して差し替えや前後処理を注入する手法が中心と考えられます。LSPosed互換を謳うため、既存のLSPosedモジュールやフック定義ファイルとの互換レイヤーを備える設計が想定され、モジュール管理・有効化ロジック、優先度やターゲットプロセス判定、例外処理やセキュリティ(署名、パーミッション)などの実運用課題にも対処している可能性が高いです。
リポジトリにはCIワークフロー(GitHub Actions)の定義やCrowdin連携が示されており、継続的インテグレーションと多言語ドキュメントの運用が組み込まれています。また .gitmodules の存在から外部サブモジュールに依存しており、機能を分割して管理するモジュール化された設計が伺えます。非rootでのフックはAndroidのバージョン差分や厳格化されたセキュリティへの対応が鍵となるため、ランタイム検出・互換性層・フォールバック戦略といった実装上の工夫が重要になります。さらに、ユーザー空間での実装はシグネチャやAPK整合性保護を回避するための工夫や、プロセスライフサイクルに沿った確実な初期化処理が要求されます。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitattributes: file
- .github: dir(ワークフロー定義、Issueテンプレなど)
- .gitignore: file
- .gitmodules: file(サブモジュール管理)
- LICENSE: file
- README.md: file(LSPatch Frameworkの説明、バッジ付き)
- appやlibに相当するJavaソースディレクトリ(プロジェクトのメイン実装)
- build関連の設定ファイル(Gradle等を想定)
- Crowdinやローカライズ用の設定ファイル(多言語対応)
- CIワークフローファイル(GitHub Actionsでのビルド定義) …他 17 ファイル
リポジトリはファイル数自体は小規模ですが、サブモジュールやCI・ローカライズ設定を含んでおり、実際の機能は外部モジュールやドキュメントに分割されている可能性があります。LICENSEファイルが含まれているため、利用条件や配布の方針が明確化されています。
まとめ
LSPosed互換を非rootで実現する意欲的なフレームワークで、運用や国際化を意識した構成が魅力です(50字)。
リポジトリ情報:
- 名前: HPatch
- 説明: A non-root Xposed framework extending from LSPosed
- スター数: 8
- 言語: Java
- URL: https://github.com/wyx176/HPatch
- オーナー: wyx176
- アバター: https://avatars.githubusercontent.com/u/32320103?v=4
READMEの抜粋:
LSPatch Framework
[本記事はリポジトリ内の公開情報を元に要約・解説しています。実際の導入や開発を行う際は、READMEやLICENSE、ソースコードを直接確認してください。