入門
ここで学べること
- リバースエンジニアリングとは
- 動的解析ツール Frida の簡単な使い方
リバースエンジニアリングとは
リバースエンジニアリング(Reverse engineering から。直訳すれば逆行工学という意味)とは、機械を分解したり、製品の動作を観察したり、ソフトウェアの動作を解析するなどして、製品の構造を分析し、そこから製造方法や動作原理、設計図などの仕様やソースコードなどを調査することを指す。出典: フリー百科事典『ウィキペディア(Wikipedia)』
つまり「iOS アプリケーション(iOS アプリ)をリバースエンジニアリング(以下、RE)する」ということは、 iOS アプリを分解して解析したり、動作を観察して解析したりするということです。
分解して解析することを静的解析といいます。
動作を観察して解析することを動的解析といいます。
それぞれについて簡単に説明します。
静的解析
「iOS を静的解析する」というのは、アプリの実体(つまりipaファイルのことです)をデバイスから抜き出して、実行ファイルや設定ファイルを解析することをいいます。
iOS アプリを静的解析する場合には以下のツールを使うと良いでしょう。
- objdumpコマンド
- dsdumpコマンド(またはnmコマンドとclass-dumpコマンド)
- ディスアセンブラ(Hopper Disassemblerがオススメですが 1 万円程するので、最初のうちは無償のGhidraを使うと良いでしょう)
動的解析
「iOS アプリを動的解析する」というのは、実際に動作しているアプリがどのような関数を呼び出すのか観察したり、関数に渡す引数を動的に書き換えて挙動を確認してみたりすることをいいます。
iOS アプリを動的解析する場合、使うツールは以下の通りです。
- frida(動的解析ツールキット)
- lldb(デバッガ)
また、適宣radare2やcycriptを使うのも良いですが、本ドキュメントでは言及しない予定です。
動的解析ツール frida の簡単な使い方
セットアップ
Frida のインストールに python は必須です。 macOS ユーザーなら下記コマンドですぐインストールできます。
brew install python
Frida のインストールには pip を使用します。
pip3 install frida-tools
Twitter アプリを観察してみる
TODO
参考情報
TODO