SuperOneClick の詳細の続き。
今回は Unroot ボタンをワンクリックすると何が起きるのかを解説してみる。
Unroot ボタンの処理は、Root ボタンで配置した su ファイルや Superuser アプリを削除することを目的としている。
インストールした busybox や、/data/local/tmp/ にコピーしたファイルは削除されないため、これらのファイルも削除したい場合には、Shell Root ボタンで root 権限に昇格してからコマンド操作で削除すると良い(/data/local/tmp/ のみなら root 権限は不要)。
順に処理を追っていく。
1. ADB Server の停止と起動
環境によっては Android SDK がインストールされていたりして、既に別バージョンの ADB Server が起動しているかもしれないので、ADB Server を停止して SuperOneClick に同梱されている ADB から ADB Server を起動する。
2. exploit 用のバイナリのコピー
テンポラリの /data/local/tmp/ に、クライアント上の psneuter または rageagainstthecage ファイルをコピーする。
※どちらをコピーするかは、画面でのユーザ選択次第。
実行できるように、コピーしたファイルのパーミッションを 0755 (rwxr-xr-x) にする。
3. exploit の実行
adbd が root 権限に昇格されるまで次の2つ処理を順に繰り返す。
・exploit を実行して root 権限の判定を行う
・ADB Server を停止して再度起動する
4. busybox のコピー
/data/local/tmp/ に クライアント上の busybox ファイルをコピーする。
実行できるように、コピーしたファイルのパーミッションを 0755 (rwxr-xr-x) にする。
5. /system のリマウント
mount コマンドを利用して /system にマウントされているデバイスファイルパスを取得する。
/system を 読み書き可でリマウントする。ファイルシステムが使用中の場合は開放されるまで待つ。
6. su と Superuser アプリの削除
/system/bin/ から su ファイルを削除する。
/system/app/ に Superuser.apk があれば削除する。
com.noshufou.android.su パッケージ(つまりは Superuser) をアンインストールする(Superuser アプリの使用していたデータやキャッシュを削除する)。
7. /system のリマウント
/system を 読み取り専用にしてリマウントする。ファイルシステムが使用中の場合は開放されるまで待つ。
8. su のテスト
su の実行に失敗することを確認する。
以上で終了。
exploit を利用して root 権限に昇格した後、su と Superuser アプリを削除している。
後半が少し異なるくらいで、Root ボタンでやっていることとほぼ同じ。
su を削除しても、adbd 自体は root 権限のまま動き続けるので、必要に応じて SC-02B 本体を再起動すること。
0 件のコメント:
コメントを投稿