Androidのアプリのバグ修正機構(弊研究室の某課題について考える5日目)
はじめに
この記事は弊研究室の某課題について考えるの5日目の記事となります。
一回AndroidのHotfixに関するCTF問題が出たので何となく書いた方がいいのかなぁと、後弊研究室でHotfixではないけど似たような概念のことを行っているのでこういう技術もあるのだという周知のために書きます。
お品書き
- AndroidのHotfix
- Andfix
- 弊研究室のやってること
AndroidのHotfix
ホットフィックス (hotfix, hot-fix) とは、ソフトウェア製品において製造元がバグを修正した際に、ユーザへ修正版を提供する形態のひとつ。特に迅速性を重視した形態である。要はパッチをあてるのですが、それが迅速にできる形式ということです。
バグが見つかったときにバグを修正して、修正したアプリをマーケットに申請してとやっていると遅くなってしまう。それを迅速に提供できる形にするのがAndroidのHotfix技術になります。
Andfix
AndfixはJNIを利用した方法です。CTFで出た問題もJavaのコードのバグを.soファイルでパッチをあててる問題でした。
Andfixの流れとしては
バグ修正後のapkを作成する⇒apkpatchを用いてパッチファイルを作成⇒作成したパッチファイルをSDカードにコピー⇒元のapkを起動
という流れでHotfixを行います。
Hotfixに関してはこちらの記事が大変わかりやすいので
Androidのリパッケージ
Androidのアプリケーションではリパッケージができます。これはAndroid端末上でも可能です。
前の記事でAndroidのアプリケーションのapkの中身を見ましたが、署名関係のファイルであるMETA-INF/ディレクトリ以外のファイルをzipにまとめて署名することでリパッケージはできます。ですが、元の証明書ではなくオレオレ証明書を使用します。
これを利用してセキュリティのバグ等を開発者依存せずに治すこともできます。ただこれは改造でもあるのでグレー、開発者としての対応としてはこの記事にあるような署名検証で簡易なものであれば検知可能であります。