1. リバースエンジニアリング (Reverse Engineering)
リバースエンジニアリングはアプリのバイナリコード(Binary Code)をデコンパイル(Decompile)して元のソースコードやそれに近い形を復元する過程です。
AndroidのAPKファイルやiOSのIPAファイルはそれぞれデコンパイルを通じて分析することができます。
この方法は主にアプリの内部ロジックを理解したり、データ通信方法を把握するために使用されます。
リバースエンジニアリングを回避するための特別な処理がされたアプリに対しては分析ができないこともあります。
以下はAndroid APKのリバースエンジニアリングとiOS IPAのリバースエンジニアリングをそれぞれまとめてみました。
1.1. Android APKリバースエンジニアリング
ツール: jadx、APKTool、Dex2jar など
1.1.1. Android APKリバースエンジニアリングの進行手順
Google Play StoreからAPKファイルをダウンロードします。
APKToolなどのツールを使用してAPKファイルをデコンパイルします。
デコンパイルされたソースコードを分析してアプリのロジック、APIエンドポイント、データ構造などを把握します。
ネットワークパケットを分析したり、ログを確認してデータ通信方法を把握します。
1.2. iOS IPAリバースエンジニアリング
ツール: Hopper、IDA Pro、Ghidra など
1.2.1. iOS IPAリバースエンジニアリングの進行手順
App StoreからIPAファイルをダウンロードします。
選択したツールを使用してIPAファイルをデコンパイルします。
デコンパイルされたソースを分析してアプリの内部ロジック、データ通信方法などを理解します。
2. OCR
OCR (Optical Character Recognition)はアプリ画面をキャプチャしてその画像からテキストを抽出する方法です。
OCRの正確性はさまざまな要素に影響を受けます。
テキストのサイズ、フォント、背景色などが正確性に影響を与える可能性があります。
これは高い正確性を期待しづらい場合があるため、推奨される方法ではありません。
しかしAPIやソースコードにアクセスできない場合や、他の方法でデータを取得するのが難しい状況では有用な方法となることがあります。
2.1. OCRツール
Tesseract: 最も広く知られたオープンソースOCRエンジンです。
Google Cloud Vision API: Googleが提供するOCRサービスで、高い正確性とさまざまな言語サポートが可能です。
ABBYY FineReader: 商用OCRソフトウェアで高い正確性を提供します。
2.2. OCRツールを通じた進行手順
対象アプリで必要な情報が表示される画面をキャプチャします。
OCRの正確性を高めるために画像の前処理が必要な場合があります。これには画像からノイズを除去したり、明るさやコントラストを調整する作業が含まれます。
前処理された画像をOCRツールを通じてテキストに変換します。
OCRを通じて得られたテキストは精製されていないか、エラーがある可能性があるため、これを精製する作業が必要です。
精製されたテキストを分析し、必要なデータを保存します。
3. パケットスニッフィング(Packet Sniffing)
パケットスニフィングはネットワークでデータパケットをキャプチャして分析する過程です。
この方法はアプリクローリングで該当アプリがサーバーとどのようにデータをやり取りしているかを理解しようとする際に役立ちます。
パケットスニフィングを通じてアプリの内部ロジック、使用されるAPIエンドポイント、認証メカニズムなどを分析することができます。
3.1. パケットスニフィングツール
Wireshark: 最も広く使用されるパケットスニフィングツールです。
Charles Proxy: 主にウェブ開発とモバイルアプリ分析に使用されます。SSLプロキシング機能を提供し、HTTPSトラフィックも分析可能です。
MITMproxy: 中間者攻撃(Man-in-the-Middle)をシミュレートしてトラフィックを分析します。
tcpdump: テキストベースのパケット分析ツールで、サーバー環境で有用に使用されます。
3.2. パケットスニフィングを通じた進行手順
パケットスニフィングツールをインストールし、必要に応じてアプリやデバイスにプロキシ設定を行います。
アプリを実行し、データをやり取りする間パケットスニフィングツールでトラフィックをキャプチャします。
キャプチャしたパケットを分析してAPIエンドポイント、使用されたプロトコル、送信されたデータ形式などを把握します。
分析を通じて知ったAPIエンドポイントにどのようなリクエストを送り、どのように応答を受け取るかを理解する必要があります。
一般的にRESTful APIの場合、GET、POST、PUT、DELETEなどのHTTPメソッドが使用されます。必要なデータやパターンを確認したら、それを基にクローリングコードを作成します。
4. 結論
APIエンドポイント(End Point)にはユーザー個人のログイン情報など、機密情報が露出する危険性があります。また、アプリのアップデートによってAPIエンドポイントが変更される可能性が常に存在するため、それに対する対応策とともに運用することをお勧めします。
この記事も一緒に読んでみてください:
データ収集、今や自動化しましょう
コーディングなしで5分で開始 · 5,000以上のウェブサイトをクローリングした経験




