CTF Android問に強くなる

はじめに

研究でAndroid系扱っているのにCTFでAndroid問が解けないので強くなりたい.... ついでにAndroid問を解くために準備しておくとよいものと私のいつものやり方(デコンパイル)を載せておきます

このページは私が見つけたAndroid問をひたすらのっけるだけ、Writeupは出来たやつからリンクをはる

Jewelはksnctfの問題なのでWriteupは載せません

問題一覧

Android CTF問を解くのに必須なもの

Android CTF問を解くのにあるとよいもの

Android CTF問でやること

apkの中身を見れるようにする

まずは配られたapkの中身を見れるようにします。

このときに使うのがapktoolunzip

apkはzipファイルなのでjavaソースコードだけでいい場合はunzipでいいです。

ただしunzipではAndroidManifestファイルが見れないのでそういうときはapktoolを使うようにしています。

$ unzip test.apk
$ apktool d test.apk

こんな感じで使います。

apkの構成は以下のようになっています。unzipを使ったときは以下の構成になっていると思います。

apktoolだとclasses.dexファイルがなくてその代わりにsmaliファイルがあります。

$ ls
AndroidManifest.xml # マニフェストファイル
META-INF/ # 署名
assets/ # アプリで必要になるデータ等がある
classes.dex # Javaのソースコード
res/ # アイコンとかのリソースが入っている
resources.asrc

dexファイルをjavaで見れるようにする

ソースコードが見れれば解けるような問題もあります。ということでdexファイルをjavaで見れるようにします

dex2jarを使うとアプリで使われているclassファイルが出てきます。あとはそれをjadを用いて見れるようにします。

基本的にはMainActivity.classが必ずあるのでそれをjadで見て、後は必要に応じてjadを使っていけばいいと思います。 MainActivity.classがどこにあるのかはfind ./ -name MainActivityとかでどうぞ

$ dex2jar classes.dex
$ jad ./***/***/MainActivity.class

apkファイルが配られたらとりあえずやることはこんな感じになると思います。