LINE Thrift IDLコンパイラ:APK逆コンパイルからの完全なThrift IDL抽出ツール
概要
LINE Thrift IDLコンパイラは、LINEのAPKから逆コンパイルされたJavaソースコードを解析し、ThriftのIDL(Interface Definition Language)を自動で抽出・生成するツールです。難読化されたクラス名の型解決を自動化し、複雑なデータ構造(リスト、マップ、セット、列挙型)にも対応。また、エンドツーエンド暗号化(E2EE)関連のコンポーネント抽出も実装されており、サービスのリクエストやレスポンスを正確にマッピング可能です。これにより、APKの動作解析やプロトコル理解が飛躍的に効率化されます。
リポジトリの統計情報
- スター数: 3
- フォーク数: 0
- ウォッチャー数: 3
- コミット数: 2
- ファイル数: 11
- メインの言語: Python
主な特徴
- 逆コンパイルJavaソースからの完全なThrift IDL抽出
- 難読化クラス名の自動型解決機能搭載
- 複雑な型(リスト、マップ、セット、enum)を正確に解析
- エンドツーエンド暗号化(E2EE)コンポーネントの抽出対応
技術的なポイント
本プロジェクトは、LINEのAPKを逆コンパイルしたJavaソースコードを対象に、Thrift IDLを自動で抽出・生成する点が最大の特徴です。通常、APKの解析は難読化や複雑な型構造のため困難ですが、本ツールはこれを解決するために高度な解析ロジックを実装しています。
まず、難読化されたクラス名に対しては、コード内のtoString()メソッドのパターンを活用し、どの型がどのクラスに対応するかを自動的に推定します。これにより、ソースコードの可読性が低くても適切な型解決が可能です。
さらに、Thriftでよく用いられる複雑なデータ構造にも対応。リスト、マップ、セット、enumといった多様な型を正確に解析するための仕組みが組み込まれており、IDLの再現性を高めています。これにより、APIのリクエスト・レスポンス構造を忠実に再現することができます。
また、LINEのエンドツーエンド暗号化(E2EE)技術の解析にも対応。LetterSealingなどの暗号化コンポーネントを抽出・解析する機能があり、セキュリティ面での理解や検証に役立ちます。これにより、通信内容のセキュリティ解析やプロトコルの詳細把握が可能です。
内部的にはPythonで実装されており、Makefileやドキュメント、サンプルコードが同梱されているため、導入やカスタマイズもしやすい設計です。全体として、APKリバースエンジニアリングにおけるThriftプロトコル解析の課題を大幅に軽減し、開発者や研究者の解析効率を飛躍的に向上させるツールとなっています。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: バージョン管理から除外するファイル指定
- Makefile: ビルドや実行タスク定義
- README.md: プロジェクト概要と使い方説明
- docs: ドキュメント類を格納
- examples: サンプルコードや解析例を収録
その他主要ファイル:
- 複数のPythonスクリプトファイル:解析ロジックや型解決処理を実装
まとめ
APKのThrift IDL抽出を自動化し解析効率を革新するツール。
リポジトリ情報:
- 名前: compiler
- 説明: 説明なし
- スター数: 3
- 言語: Python
- URL: https://github.com/ToughLad/compiler
- オーナー: ToughLad
- アバター: https://avatars.githubusercontent.com/u/105173245?v=4