LoginSignup
81

More than 5 years have passed since last update.

iOS Reverse Engineeringの操作手順

Last updated at Posted at 2017-05-10

上篇: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でデータベースを開くなら、以下のようにフォローした人の個人情報が発見しました。

屏幕截图_051017_101454_AM.jpg

このような情報は心掛いっぱい入っています:データベースの名前、ユーザーの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を入口として、コードに潜り込めます。

image

逆アセンブリ類

コードに潜り込んたら、逆アセンブリのツールを使ってコードの流れを整理します。逆アセンブリツールはバイナリーを入力として処理、アセンブリコードをレイアウトします。逆アセンブリ類は高度専門家の科学領域として、よく使われるツールはだか2つ、IDAとHopper。

老舗企業のIDAは分野内最も使われる逆アセンブリツールでした、Windows、Linux、MacOSプラントフォームと多種のCPUアーキテクチャに対応しています。

image

Hopperは近々デビューした後輩です、MacOS・iOSを専攻しています。
image

バイナリーを逆アセンブリした後、一番面白い同時に最もチャレンジところが迎えに来ました、アセンブリコードの分析です。詳しくはあとでゆっくり説明させていただきます。

デバッガー類

iOSアプリ開発者にはもうなれているかもしれない、iOSアプリの開発工程中よく使われているXcodeのLLDBで、コードの途中にBreakpointを設置し、プロセスを一時中止にさせることで、そのインスタント状態を示すことが多い。Reverse Engineeringにとっても、LLDBを使っています。

image

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 ファイルシステム紹介

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
81