わいえむねっと

Contents
Categories
Calendar
2013/11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.068 sec
Chashed: -
2013/11/09 Sat
Droid3 に ServersMan SIM LTE 100 を差してあれこれしたメモ。


APN設定

システムファイル編集

/system/etc/apns-conf.xml に設定追加。

    <apn carrier="DTI"
        mcc="440"
        mnc="10"
        apn="dream.jp"
        user="user@dream.jp"
        server="*"
        password="dti"
        auth="CHAP"
    />

/system/etc/ppp/peers/pppd-ril.options のuser/passwordを変更。

user user@dream.jp
password dti

設定適用

  1. Settings
  2. Wireless & networks
  3. Mobile networks
  4. Network Mode で GSM/UMTS を選択
  5. Access point names で New APN を選択
  6. 設定入力してSave
  7. Network Mode で Global を選択

これで接続は可能に。
ただし、アンテナピクトは×のままなので以下に続く。


アンテナピクト表示

使用したファイル

  • JDK
  • jdk-7u45-windows-i586.exe
  • jdk-6u23-windows-i586.exe
  • 最初1.7を使っていたけど、途中から smali-1.3.2 のビルドバージョンにあわせて1.6にした。
  • smali
  • smali-2.0b5.jar
  • baksmali-2.0b5.jar

smali - An assembler-disassembler for Android's dex format - Google Project Hosting
http://code.googl​e.com/p/smali/

  • dexopt-wrapper
  • dexopt-wrapper.zip

xda-developers - View Single Post - can we use odex file optimization for all apps
http://forum.xda-developers​.com/showpost.p​hp?p=3864655&​postcount=​36

  • 詰め合わせ
  • datasim_framework_jar_patcher_20120317.zip
  • adb.exe
  • smali-1.3.2.jar
  • baksmali-1.3.2.jar

ブローヴちゃん Android + データ専用 SIM での動作修正パッチ
http://bl.oov.ch/2012/01/android-sim.html


試行①

端末からシステムファイルを取得


>adb pull /system/framework system/framework
>adb pull /system/app system/app

逆アセンブル


>java -jar baksmali-1.3.2.jar -d system/framework -x framework.odex


UNEXPECTED TOP-LEVEL EXCEPTION:
org.jf.dexlib.Util.ExceptionWithContext: regCount does not match the number of arguments of the method
        at org.jf.dexlib.Util.ExceptionWithContext.withContext(ExceptionWithContext.java:54)
        at org.jf.dexlib.Code.InstructionIterator.IterateInstructions(InstructionIterator.java:92)
        at org.jf.dexlib.CodeItem.readItem(CodeItem.java:154)
        at org.jf.dexlib.Item.readFrom(Item.java:76)
        at org.jf.dexlib.OffsettedSection.readItems(OffsettedSection.java:48)
        at org.jf.dexlib.Section.readFrom(Section.java:143)
        at org.jf.dexlib.DexFile.<init>(DexFile.java:431)
        at org.jf.baksmali.main.main(main.java:265)
Caused by: java.lang.RuntimeException: regCount does not match the number of arguments of the method
        at org.jf.dexlib.Code.Format.Instruction3rc.checkItem(Instruction3rc.java:129)
        at org.jf.dexlib.Code.Format.Instruction3rc.<init>(Instruction3rc.java:79)
        at org.jf.dexlib.Code.Format.Instruction3rc.<init>(Instruction3rc.java:44)
        at org.jf.dexlib.Code.Format.Instruction3rc$Factory.makeInstruction(Instruction3rc.java:145)
        at org.jf.dexlib.Code.InstructionIterator.IterateInstructions(InstructionIterator.java:84)
        ... 6 more
Error occured at code address 0
code_item @0x15ee60

baksmaliのバージョンを上げてリトライ

>java -jar baksmali-2.0b5.jar -d system/framework -x framework.odex

outディレクトリにsmaliファイルが出力される。

パッチ

out/com/android/internal/telephony/gsm/GsmServiceStateTracker.smali を開いて、regCodeToServiceState のswitchを書き換える。

    .line 1762
    :pswitch_data_24
    .packed-switch 0x0
        :pswitch_1f     # 20->1f
        :pswitch_1f
        :pswitch_20
        :pswitch_20
        :pswitch_20
        :pswitch_1f
        :pswitch_22
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_1f     # 22->1f
        :pswitch_5
        :pswitch_22
        :pswitch_22
        :pswitch_22
    .end packed-switch

アセンブル


>java -jar smali-2.0b5.jar -o classes.dex out

生成した classes.dex は framework.jar のルートに突っ込む。

odexファイル生成


>adb push dexopt-wrapper /sdcard
>adb push framework.jar /sdcard
>adb shell
$ cd /sdcard
$ su
# mount -o rw,remount /dev/block/system /system
# cp dexopt-wrapper /system/bin
# chmod 755 /system/bin/dexopt-wrapper
# dexopt-wrapper framework.jar new.odex /system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar:/system/framework/com.motorola.android.frameworks.jar:/system/framework/com.motorola.android.widget.jar
--- BEGIN 'framework.jar' (bootstrap=0) ---
--- waiting for verify+opt, pid=4354
--- would reduce privs here
--- END 'framework.jar' --- status=0xff00, process failed

8,796,460byteのファイルは生成されたものの、process failed なので駄目っぽい。


試行②

APIレベルを指定していなかったので逆アセンブルからリトライ。
smaliは1.3.2に戻して、JDKも1.7から1.6にしてみる。

逆アセンブル


>java -jar baksmali-1.3.2.jar -a 10 -d system/framework -x framework.odex


Error occured while loading boot class path files. Aborting.
org.jf.dexlib.Code.Analysis.ClassPath$ClassNotFoundException: Could not find superclass Ljunit/framework/TestCase;
        at org.jf.dexlib.Code.Analysis.ClassPath$ClassDef.loadSuperclass(ClassPath.java:830)
        at org.jf.dexlib.Code.Analysis.ClassPath$ClassDef.<init>(ClassPath.java:683)
        at org.jf.dexlib.Code.Analysis.ClassPath.loadClassDef(ClassPath.java:280)
        at org.jf.dexlib.Code.Analysis.ClassPath.initClassPath(ClassPath.java:163)
        at org.jf.dexlib.Code.Analysis.ClassPath.InitializeClassPathFromOdex(ClassPath.java:110)
        at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:104)
        at org.jf.baksmali.main.main(main.java:293)
Error while loading class Landroid/test/AndroidTestCase; from file framework.odex
Error while loading ClassPath class Landroid/test/AndroidTestCase;

core-junit.odex を指定してリトライ。

>java -jar baksmali-1.3.2.jar -a 10 -c :core-junit.odex -d system/framework -x framework.odex

パッチ

①と同様に処置。

アセンブル


>java -jar smali-1.3.2.jar -a 10 -o classes.dex out

odexファイル生成


# dexopt-wrapper framework.jar new.odex /system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar:/system/framework/com.motorola.android.frameworks.jar:/system/framework/com.motorola.android.widget.jar
--- BEGIN 'framework.jar' (bootstrap=0) ---
--- waiting for verify+opt, pid=1677
--- would reduce privs here
--- END 'framework.jar' (success) ---

署名


# dd if=/system/framework/framework.odex of=new.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
conv option disabled

この状態で framework.odex を差し替えたらDroid3が起動しなくなりました。

よく見たら dd がこけてたじゃないですか!やだー!


リカバリ

SafeStrap で起動。
adb経由で framework.odex を元に戻す。

>adb push system/framework/framework.odex /sdcard
>adb shell
$ cd /sdcard
$ su
# cp framework.odex /system/framework/framework.odex
# chmod 644 /system/framework/framework.odex

とりあえず文鎮からは復旧。


試行③

署名

busybox の dd でリトライ。

# busybox dd if=/system/framework/framework.odex of=new.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
20+0 records in
20+0 records out
20 bytes (20B) copied, 0.004944 seconds, 4.0KB/s
# cp new.odex /system/framework/framework.odex
# chmod 644 /system/framework/framework.odex
# sync
# reboot



いけました!


参考

xda-developers - View Single Post - [A] How do I edit services_odex
http://forum.xda-developers​.com/showpost.p​hp?p=9369187&​postcount=​4

ブローヴちゃん Android + b-mobile データ専用 SIM で電界強度を表示する
http://bl.oov.ch/2012/01/b-mobile-sim.html

android_policy_odex 逆アセンブラ(ディスアセンブル)覚書|ちゃぼのブログ
http://ameblo.jp/tanuki0424​/entry-1093980248​1.html

むう゛の framework_odexのカスタマイズ
http://m-v-n-o.blogspot​.jp/2013/06/frameworko​dex.html

ななしのブログ deodexしてみる
http://sniper-ta76.blogs​pot.jp/2012/03/deodex.htm​l