SECCONに出たけど、ネットがネックに。
土曜の15:00JSTから24時間開催されたSECCONに出場。
自分では1問も解けずに終わってしまった。
原因としては全体的に不勉強だったのと、もう一つはツールのダウンロードで時間を使い時間切れ。
アンドロイドのリバースエンジニアリングの簡単な方の問題を取り組んだ。
問題としては、AndroidアプリのAPKファイルが提供され、じゃんけんに1000回勝った時に表示されるコードを答えよ、というもの。問題としては割とオーソドックスな部類に入る。apkファイルをリバースして、MainのActivityのソースをみるとそれらしいコードが記述されている。勝利数が1000回なら、数値×勝利数×引数なしの関数の数値を含めた文字列を表示するというコード。
ただし、その関数の定義が空っぽで、すぐ前に同じ名前で、ロードしている処理がある。また、apkファイルを解凍したら拡張子が.soのファイルがあり、その名前と一致している。ということから、このファイルから関数を読み込んでると思った。そこで、調べると、soのファイルは、Linuxでwindowsのdllのような役割を果たすものと言うことが分かった。
が、残念ながら、Linuxでそのsoファイルをどう扱っていいやら分からない。LPICをもっと勉強しておけばよかった。ということで、Androidで読み込んでみることに。
これで、NDKをダウンロードしたら、、、と思ったら、ファイルが重く、また何度も失敗して時間切れ。回線が細い、安定しないという途上国の壁と知識の不足に阻まれて挫折しました。
でも、面白かった!!