Thursday, January 27, 2011

どのように,偽のandroid appをつくるのか?

GeiminiというAndroid OSを標的とした,Trojanの報告がある。
Lookout社のGeimini発見のレポート(Blog)

このTrojanは,として,第三者が運営するアプリ配布サイトで配布されている正規アプリの海賊版と一緒になって配布されている。
ここでは正規アプリの海賊版を簡単に作成できるかどうか考察してみたい。

Androidアプリケーションのリバースエンジニアリングより引用すると,

Androidアプリケーションのリバースエンジニアリングをする場合には、目的として「解析だけしたい」場合と、「解析した上で、さらに動作を自分好みに変更する」、つまりアプリケーションの改造までを行いたい場合があるだろう。前者の場合、JDによるJavaソースコード形式への(ときに不完全な)変換で十分な場合もあるだろう。この場合、読みにくいsmali形式のファイルと格闘する必要がないかもしれない。しかし後者、つまり改造までを行いたい場合、アプリケーション内の目的の箇所を自分の意図を達成するように書き換え、ふたたびAndroidアプリケーションとして動作するよう、正しくアセンブルしなおす必要がある。smaliはこれを可能にしてくれる。非常に精度が高いディスアセンブル・アセンブルが可能なので、classes.dex -> smali -> classes.dexという変換が可能なのだ。
つまり,既に apk ファイルから,classを解析して(dex2jar),ディスアセンブル(smali)して,再びclasses.dexを作成するツールが存在することを示している。
そこで,今回次のようなデモシナリオを提案する。
  • ボタンを押したら Toast Messageを表示するAndroid Appを作成する。
  • ボタンをクリックしたとき,その裏で,Identifyを読み取るコードを埋め込む。
  • 再びアセンブルしてパッケージを作成する。
  • この作業がどれだけ簡単かどうかは,後日考察してみたい。

    No comments: