上篇:iOS Reverse Engineeringに関するコンセプト
iOSアプリを逆分析の手順
iOSアプリを逆分析しようとしたら、手順は?どうやって仕掛けますか?このWrite-upの本音は皆さんにiOS Reverse Engineeringのドアを開けて見せて差し上げることです。
一般的に、iOS Reverse Engineeringはアプリ全面分析とコード局部分析の二つの段階があります。アプリ全面分析の場合、アプリの全面上に上からの視線で、アプリの行為とかファイルの仕組みとか、気になるところをまず探し出せ、コード局部分析の段階に入ります。そして気になる部分のコードをアセンブリ言語に還元し、CPUアーキテクチャまで分析して目的を果たす。
アプリ全面分析
アプリ全面分析の段階は、目標アプリを基礎功能を把握してから、功能の組み合わせを探ります。様々の操作をさりげなく試して、なんてもやってみて、アプリの反応を観察すること。その同時にきになるところを気をつけます、例えばどのオプションでアラームするのか、どのボタンを押すと音をするのか、どにような情報を書くとどこでどんな結果が出るのか、を心にかけてください。アプリのファイルシステムも、スクリーンに映った写真もロゴも、アプリの配信Configの位置も、データベースのファイルの中身も、暗号化を状況も、この段階で全面分析します。
中国の”Twitter”——新浪微博を例として言えば、Documentの目次を観察するとき、以下のデータベースを発見しました。
-rw-r--r-- 1 mobile mobile 210944 Oct 26 11:34
db_46100_1001482703473.dat
-rw-r--r-- 1 mobile mobile 106496 Nov 16 15:31
db_46500_1001607406324.dat
-rw-r--r-- 1 mobile mobile 630784 Nov 28 00:43
db_46500_3414827754.dat
-rw-r--r-- 1 mobile mobile 6078464 Dec 6 12:09
db_46600_1172536511.dat
……
SQLiteでデータベースを開くなら、以下のようにフォローした人の個人情報が発見しました。
このような情報は心掛いっぱい入っています:データベースの名前、ユーザーのID、ユーザーインフォのURL...etc...これら全部逆分析の入り口として潜入することができます。このような情報を探して整理して、きになるものをメモするのはiOS Reverse Engineeringの第一歩となります。
コード局部分析
目標が定めたら、次はコードごとに分析を始めます。
iOS Reverse Engineeringを通して、アプリのデザイン方法、内部アゴリズム、細分実現とかを推測できます。とても複雑の過程でして、アプリをパーツごとに叩き潰して再構築します。iOS Reverse Engineeringの能力を高めたいとしたら、ソフトウェア開発、ハードウェアアーキテクチャ、iOSシステム全般的に深刻に把握することです。その把握する能力こそが、どこまでいける鍵となります。一言で全て説明するわけにはいかないので、日々の重ねてどんどん身につけることです。ここで好奇心と根性はものを言います。
この文章のシリーズはただ初心者にiOS Reverse Engineeringの筋とツールを紹介するだけです、技術も日進月歩のもので、なんとかみんなと一緒に学ぶの終生学習の取り柄です。
iOSアプリを逆分析のツール
理論だけで物足りないので、これから様々のツールを使って理論を実現します。Reverse Engineeringだけあってのツールが、一般的のソフトウェア開発にてのIDEとかと比べれば、そんなにスマートではありません、幾つかの場合自分で調整する必要があります。ツールを使用するうちにどんどん慣れていくのも当たり前です、こういう状況にこの方法で解決できる推測できます。Reverse Engineeringのツールは殆ど四酒類に分けます:モニター類、逆アセンブリ類、デバッガー類、Tweak開発類。
モニター類
探知、モニター、記録などの機能をつけているツールはミニター類に分類されます。このようなツールは目標アプリの内部と外部の変化を検測して主人に通報します、例えばUIの変化、Network Activity、ファイルの読み書きとか。欲に使われているツールはReveal、Snoop-it、Introspy、Appmonなどあります。
欲に使われる有名なアプリUI探知ソフト:Reveal、このソフトを使って気になるUIを入口として、コードに潜り込めます。
逆アセンブリ類
コードに潜り込んたら、逆アセンブリのツールを使ってコードの流れを整理します。逆アセンブリツールはバイナリーを入力として処理、アセンブリコードをレイアウトします。逆アセンブリ類は高度専門家の科学領域として、よく使われるツールはだか2つ、IDAとHopper。
老舗企業のIDAは分野内最も使われる逆アセンブリツールでした、Windows、Linux、MacOSプラントフォームと多種のCPUアーキテクチャに対応しています。
Hopperは近々デビューした後輩です、MacOS・iOSを専攻しています。
バイナリーを逆アセンブリした後、一番面白い同時に最もチャレンジところが迎えに来ました、アセンブリコードの分析です。詳しくはあとでゆっくり説明させていただきます。
デバッガー類
iOSアプリ開発者にはもうなれているかもしれない、iOSアプリの開発工程中よく使われているXcodeのLLDBで、コードの途中にBreakpointを設置し、プロセスを一時中止にさせることで、そのインスタント状態を示すことが多い。Reverse Engineeringにとっても、LLDBを使っています。
Tweak開発類
UIからコードを潜り込み、逆アセンブリツールとデバッガーでバイナリーを分析した後、成果をTweak開発ツール:TheosでTweakをかけることになりました。iOSアプリにとってXcodeは最も使われている公式IDEでしたが、Jailbreak iOSに移ったら公式ツールなどは存在しないです。Xcodeを基づいてのiOSOpenDevとか、CLIを基づいてのTheosもあります。自分から言えば、Theosのほうが遥かに優秀でした。Theosを知る前にずっとAppStoreの枠内に制限されることをなんとなく感じているが、Theosを把握してからAppStoreを突破して全面的にiOSシステムに猪突猛進しました。
SUMMARY
この文章はiOS Reverse Engineeringのコンセプトを紹介し、大体の流れを説明しました。詳しくの操作手順とケース学習はこれから入ります。
次の章:iOS ファイルシステム紹介