Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- jp.enjoytokyo.theme100 2.0.0.2用
- 2.0.4でも同じパッチで改造できます
- 【まえがき】
- これは「東京100ガイド」アプリをWiMAX対応するための説明文書です
- WiMAX機でなければ実施する必要はありません
- 【概要】
- CVE-2013-4787は、apk内に同一のエントリが複数含まれるとき、最後のエントリのみが署名検証に使用されるという脆弱性です。
- これを利用すると、改変したclasses.dexを先にapkに追加することで、改変したコードの実行が可能となります。
- ※これ系のハックは/data/dalvik-cache/以下を改変する方法が主流でしたが、今回system権限は必要としません。無改造で実施できます。
- 【準備】
- ・apk downloader
- ・7-zip(7z.exe)
- ・apktool - apkを逆アセンブルするため
- https://code.google.com/p/android-apktool/
- ・minizip - 細工したapkを作成するため
- http://www.winimage.com/zLibDll/minizip.html
- ※大抵のzip圧縮ツールは同一のエントリが含まれることをチェックしますが、minizipはチェックしないため使用することができます
- ※バイナリは提供されていないようなので自力でコンパイルする必要があります
- 【方法】
- 1-1. apk downloaderを用いて東京100ガイド( https://play.google.com/store/apps/details?id=jp.enjoytokyo.theme100 )をダウンロードします。
- 1-2. zip展開ツールでjp.enjoytokyo.theme100を展開します(ここではtheme100フォルダ)
- 2-1. apktoolを用いてjp.enjoytokyo.theme100を展開します。
- 2-2. jp.enjoytokyo.theme100ディレクトリで、patch -p1 < theme100.diff(後述)としてパッチを当てます。
- 2-3. jp.enjoytokyo.theme100をapktoolでビルドし、classes.dexを抜き出します。
- 3. 以下のシェルスクリプト(に準じるコマンド列)によって細工したtheme100.zipを作成します。
- ---
- cd theme100
- rm ../theme100.zip
- 7z a -tzip -mx=9 ../theme100.zip assets lib org res META-INF AndroidManifest.xml resources.arsc
- cd ..
- ./minizip -a -9 theme100.zip classes.dex #改変後のdex
- cd theme100
- ../minizip -a -9 ../theme100.zip classes.dex #改変前のdex
- ---
- 4. theme100.zipはadb install -r、もしくは拡張子をapkに変更して端末に転送することによりインストールが可能となります。
- --- theme100.diff ---
- diff -ur a/smali/jp/enjoytokyo/theme100/LetBaseActivity.smali b/smali/jp/enjoytokyo/theme100/LetBaseActivity.smali
- --- a/smali/jp/enjoytokyo/theme100/LetBaseActivity.smali 2013-07-11 18:03:45.000000000 +0900
- +++ b/smali/jp/enjoytokyo/theme100/LetBaseActivity.smali 2013-07-11 15:39:50.000000000 +0900
- @@ -347,17 +347,17 @@
- .line 96
- :cond_1
- - invoke-virtual {v2}, Landroid/net/NetworkInfo;->getTypeName()Ljava/lang/String;
- + #invoke-virtual {v2}, Landroid/net/NetworkInfo;->getTypeName()Ljava/lang/String;
- - move-result-object v7
- + #move-result-object v7
- - const-string v8, "MOBILE"
- + #const-string v8, "MOBILE"
- - invoke-virtual {v7, v8}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
- + #invoke-virtual {v7, v8}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
- - move-result v7
- + #move-result v7
- - if-eqz v7, :cond_2
- + #if-eqz v7, :cond_2
- .line 97
- invoke-virtual {v2}, Landroid/net/NetworkInfo;->isConnected()Z
- diff -ur theme/smali/jp/enjoytokyo/theme100/MapSearchActivity.smali jp.enjoytokyo.theme100/smali/jp/enjoytokyo/theme100/MapSearchActivity.smali
- --- theme/smali/jp/enjoytokyo/theme100/MapSearchActivity.smali 2013-07-11 18:03:45.000000000 +0900
- +++ jp.enjoytokyo.theme100/smali/jp/enjoytokyo/theme100/MapSearchActivity.smali 2013-07-11 15:40:27.000000000 +0900
- @@ -981,17 +981,17 @@
- .line 883
- :cond_1
- - invoke-virtual {v4}, Landroid/net/NetworkInfo;->getTypeName()Ljava/lang/String;
- + #invoke-virtual {v4}, Landroid/net/NetworkInfo;->getTypeName()Ljava/lang/String;
- - move-result-object v8
- + #move-result-object v8
- - const-string v9, "MOBILE"
- + #const-string v9, "MOBILE"
- - invoke-virtual {v8, v9}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
- + #invoke-virtual {v8, v9}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
- - move-result v8
- + #move-result v8
- - if-eqz v8, :cond_2
- + #if-eqz v8, :cond_2
- .line 884
- invoke-virtual {v4}, Landroid/net/NetworkInfo;->isConnected()Z
Advertisement
Add Comment
Please, Sign In to add comment