Androidにマルウェア(または単に 悪い アプリケーション)を広めるための最も一般的な戦略の1つは、アプリの再パッケージ化です。 RSA Conferenceのプレゼンテーションで、viaForensicsのPau Oliva Foraは、Androidアプリのリバースエンジニアリングに数分しかかからないことを示しました。
アプリを入手する
Foraによると、アプリのリバースエンジニアリングの最初のステップは、自分でアプリを入手することでした。 お使いの携帯電話では滑らかに見えますが、Androidアプリ(またはAPK)は実際には新しい拡張子を持つZIPファイルです。 内部には、コードから必要なメディアまで、アプリの実行に必要なものがすべて含まれています。
APKを取得する方法はいくつかあります。 Androidでリバースエンジニアリングを行うアプリがある場合、ASTROなどのファイルマネージャーを使用して、バックアップをSDカードに保存できます。 Androidをコンピューターに接続し、Android Debugging Bridgeを使用してアプリをPCに転送することもできます。 オンラインツールを使用して、APKをGoogle Playから削除することもできます。
引き離す
使用するAPKを作成したら、それをより使いやすいものに変換する必要があります。 このため、Foraは2つのオプションを提示しました。 APKのコンパイル済みアプリケーションコードファイル(Dalvik Executable、またはDEX)をSmaliなどのアセンブリ言語に変換するApktoolなどのツールを使用してターゲットを 逆アセンブル できます。 または、を 逆コンパイルして 、DEXをJavaアーカイブ(JAR)に変換してから、Javaに変換することもできます。
Foraは、逆コンパイルプロセスで一部のデータが失われる可能性があるため、Androidを念頭に置いて作成された逆コンパイラを使用することをお勧めします。 これにより、JARステップがスキップされ、DEXが直接Javaに変換されます。
これらのツールをすべて自分で追跡することに興味のない人のために、ForaはSantokuを提案しました。 これは、forForensicsからの特別なLinuxディストリビューションであり、Androidアプリケーションを分解、変更、再パッケージ化するために必要なすべてのツールがプリロードされています。 これは、過去に書いた強力なデジタルフォレンジックツールです。
ラピッドリバース
最後の数段落の間に眠りに落ちた場合、ここで目を覚まします。 Santokuを使用して、Foraは作成した非常に基本的なAndroidアプリを取得し、それをバラバラにしました。 次に、特定の行のコードを参照し、コードを変更、再パッケージ、署名し、変更したアプリをAndroidに再インストールして起動しました。 プロセス全体は5分もかかりませんでした。
現在、Foraは非常に簡単な例です。 このアプリは非常に基本的なものであり、難読化されたコードは含まれていません。 しかし、彼のデモンストレーションは強力な意味を持ちました。 「Androidアプリケーションの動作を変更するためにこれを行うことができます」とFora氏は語り、ゲームの無限の生活や無料アプリの有料機能をほんの数例として挙げています。
もっと怖い例? 私たちが見た悪意のあるクローンアプリのいずれかに心を向けるだけです。 大ざっぱなFlappyBirdクローンをダウンロードする前に、これについて考えてください。