次なる

次なるミッションは何ですか?となれば、アレしかない。

mission3. ガラ糞を排除せよ

とにかく、あの糞プロセスの嵐は潔癖症でなくても嫌悪感を抱くはず。
そして、system領域が手中に収まった今、プリイン糞も排除出来るはず。
はず。
はず。
いや、知らないよ。
やったことないし。

# busybox df (リンク張れよ)

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/block/mtdblock1    345600    262600     83000  76% /system

さぁ、どうなるか乞うご期待。

あれ?
ネクサスの根は?
bootloaderのunlockが何故必要なのか理解してる?
zergrushやpsneuterとかgbとか涼しい顔で使っていたけどコード解析した?理解してる?


それどころじゃない。
糞を排除する。
UkiUkiViewのアイコンだけは許せない。

るーと5

mission2. systemパテを起動時にrwマウントせよ

dmesg参照すると、

<6>[    2.231380] yaffs: dev is 32505857 name is "mtdblock1"
<6>[    2.231392] yaffs: passed flags ""
<4>[    2.231402] yaffs: Attempting MTD mount on 31.1, "mtdblock1"
てなところしかヒットせず。

init.rc参照していると、
    mkdir /system
    mkdir /data 0771 system system
    mkdir /persist 0771 system system
    # Mount /system rw first to give the filesystem a chance to save a checkpoint
    mount yaffs2 mtd@system /system
    mount yaffs2 mtd@system /system ro remount
ヒット。

て。
init.rcて、boot.img/initramfs解体しての変更でないとダメじゃん。
ルートのinit.rcは揮発じゃん。

で、ネットをうろついていると、どうもinit.rcに

service flash_recovery /system/etc/install-recovery.sh
    oneshot

て記述があるから、install-recovery.shに初期化時にやりたいことを記載すれば良いとな。

そそくさ、install-recovery.sh(utf8/lf)を作成。

--- install-recovery.sh
#!/system/bin/sh
#mount yaffs2 mtd@system /system rw remount <- これだとrwマウントされない。mountコマンドはいつも深い

mount -o rw,remount /system /system
---

# dd if=/mnt/sdcard/install-recovery.sh of=/system/etc/install-recovery.sh
0+1 records in
0+1 records out
97 bytes transferred in 0.003 secs (32333 bytes/sec)
# chmod 755 /system/etc/install-recovery.sh
# reboot

そして、

$ mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
/dev/block/mtdblock1 /system yaffs2 rw,relatime 0 0
/dev/block/mtdblock4 /data yaffs2 rw,nosuid,nodev,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,u
id=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset
=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relat
ime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,ioch
arset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0

伝説へ


るーと4

Superuser.apkとは何ぞや?というところから。
入浴れぐぽんで、思いの限り検索していると文献発見。
酢がスルー許可だと危険過ぎるちゅうことで、根泥で使われる酢は、

[su]1. 起動
[su]2. ホワイトリスト検索(DB)
[su]3. 未登録ならば
[su]4. インテント投げてホワイトリストポーリング
[superuser.apk]5. Superuser.apkがフック起動
[superuser.apk]6. 確認ダイアログ
[superuser.apk]7. 許可ならばホワイトリスト登録(DB)
[su]8. ポーリング抜けてsh叩く

という手順が踏めるように実装されている。
http://code.google.com/p/superuser/source/browse/trunk/su/su.c?r=2
つまり、Superuser.apkとセットで動作させている。まぁ、よく見掛ける酢権限で実行を許可しますか?のアレ(泥アプリ)です。
ということは?
そもそも、プライバシーに関する情報やら課金に関わるような情報を泥上に置いておくなんて、個人的には信じられなくて、そんなものはガラケーでやっておけば良いという考え。
だから、酢権限の確認さえ、私の場合は不要ちゅうことで。
そいや、あの酢バイナリて適当に落としたんだよなぁ。それが悪かった。
shを叩ければそれで良いのか。su経由のshではなく、shそのものにuid付与でsuとする。

# cat sh > su
# chmod 4755 su
# reboot

そして、

$ su
#

伝説へ

さーて、次はsystemパテのオートwマウントだ。

るーと3



酢のPermission deniedですが、logcat閲覧すると、

E/su      (  817): stat failed with 2: No such file or directory
W/su      (  817): request rejected (2000->0 /system/bin/sh)


とあります。
はて?
statコマンドない?と、stat叩いてみると、No such file or directoryと出る。
そりゃそうかと、仕方が無いので、toolboxに対してstatでリンクしてみると(ちゅか、toolbox statで良いな)、そんなツールありませーんと弾かれる。
そりゃそうかと、更に仕方が無いので、(躊躇もせず)busyboxを追加し、statでリンク。
よーし、stat効くからねーと。

そして、


$ su
Permission denied
$


伝説へ(繰り返す

Superuser.apkが何物なのかをちゃんと調べてみることにした。

--

ところで、ちょいと参考メモ。
xbin追加した時はPATH追加しないとねーと調べたらデフォなんだと驚愕。

init.rc

# setup the global environment
    export PATH /sbin:/system/sbin:/system/bin:/system/xbin
    export LD_LIBRARY_PATH /system/lib
    export ANDROID_BOOTLOGO 1
    export ANDROID_ROOT /system
    export ANDROID_ASSETS /system/app
    export ANDROID_DATA /data
    export EXTERNAL_STORAGE /mnt/sdcard
    export ASEC_MOUNTPOINT /mnt/asec
    export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/s
ystem/framework/framework.jar:/system/framework/android.policy.jar:/system/frame
work/services.jar

るーと2

mission1.PCから繋いでroot権限で操作が出来る

という訳で、まずadbで繋げて酢投入。そこからいつでも酢になれる目論見で以下の作業。
取り急ぎ、psneuterで奪取しておく。

# mount -o rw,remount /system /system
# mount
/dev/block/mtdblock1 /system yaffs2 rw,relatime 0 0
# dd if=/mnt/sdcard/su of=/system/bin/su
51+1 records in
51+1 records out
26264 bytes transferred in 0.017 secs (1544941 bytes/sec)
# chmod 6755 /system/bin/su
-rwsr-sr-x root     root        26264 2012-03-08 14:52 su
# reboot

そして


$ su
Permission denied
$

伝説へ。

さて、酢の本質でも探るかなぁ。
気になるのは、不要と考えていたSuperuser.apkです。
あれ、別にインストいなくても酢駒で十分でしょと考えていたけど根本的に違うのかも知れない。
でも、必要であることを認識した上でインストすることに。

るーと1

ルート奪取前
shell 92 1 3308 188 ffffffff 00000000 S /sbin/adbd
ルート奪取後
root 725 1 3308 192 ffffffff 0000f534 S /sbin/adbd

という感じで、adbdの権限がrootになる訳ですが。
試したところ、2.2.2ではzergRushでもpsneuterでも奪取出来るので穴ってることが分かる。

さて、ねくさすルート前にお勉強とか言いながら訳の分からぬ方向へ進み始めたりしている。
基本的に端末上でes使ったりしてファイル云々とかする気もないし、su系アプリとかも色々と使ってみたけど別に無くても構わないので。
1.PCから繋いでroot権限で操作が出来る
2.systemを起動時にwオートマウントする
この2つをクリアすれば、とりあえず文句ない訳です。というか、それでやっとこさ振り出しに戻る。
毎回、穴掘るのもアレだし、常時adbdがroot権限で生成されるようには、どうすれば良いのかを調べる。

れぐぽんおさらい2

起動直後にadb接続してのプロセス一覧

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
root      1     0     272    260   ffffffff 00000000 S /init
root      2     0     0      0     ffffffff 00000000 S kthreadd
root      3     2     0      0     ffffffff 00000000 S ksoftirqd/0
root      4     2     0      0     ffffffff 00000000 S events/0
root      5     2     0      0     ffffffff 00000000 S khelper
root      6     2     0      0     ffffffff 00000000 S async/mgr
root      7     2     0      0     ffffffff 00000000 S suspend
root      8     2     0      0     ffffffff 00000000 S sync_supers
root      9     2     0      0     ffffffff 00000000 S bdi-default
root      10    2     0      0     ffffffff 00000000 S kblockd/0
root      11    2     0      0     ffffffff 00000000 S ksuspend_usbd
root      12    2     0      0     ffffffff 00000000 S khubd
root      13    2     0      0     ffffffff 00000000 S kmmcd
root      14    2     0      0     ffffffff 00000000 S bluetooth
root      15    2     0      0     ffffffff 00000000 S rpciod/0
root      16    2     0      0     ffffffff 00000000 S modem_notifier
root      17    2     0      0     ffffffff 00000000 S qmi
root      18    2     0      0     ffffffff 00000000 S nmea
root      19    2     0      0     ffffffff 00000000 S rpcrouter
root      20    2     0      0     ffffffff 00000000 D rpcrotuer_smd_x
root      21    2     0      0     ffffffff 00000000 S kswapd0
root      22    2     0      0     ffffffff 00000000 S krpcserversd
root      23    2     0      0     ffffffff 00000000 S aio/0
root      24    2     0      0     ffffffff 00000000 S nfsiod
root      25    2     0      0     ffffffff 00000000 S crypto/0
root      36    2     0      0     ffffffff 00000000 S mdp_dma_wq
root      37    2     0      0     ffffffff 00000000 S mdp_vsync_wq
root      38    2     0      0     ffffffff 00000000 S mdp_pipe_ctrl_w
root      39    2     0      0     ffffffff 00000000 S diag_wq
root      40    2     0      0     ffffffff 00000000 S scsi_tgtd/0
root      41    2     0      0     ffffffff 00000000 S mtdblockd
root      42    2     0      0     ffffffff 00000000 S spi_qsd.0
root      50    2     0      0     ffffffff 00000000 D krtcclntd
root      51    2     0      0     ffffffff 00000000 D krtcclntcbd
root      52    2     0      0     ffffffff 00000000 D kbatteryclntd
root      53    2     0      0     ffffffff 00000000 D kbatteryclntcbd
root      54    2     0      0     ffffffff 00000000 S kstriped
root      55    2     0      0     ffffffff 00000000 S kondemand/0
root      56    2     0      0     ffffffff 00000000 S kconservative/0
root      57    2     0      0     ffffffff 00000000 S usbhid_resumer
root      58    2     0      0     ffffffff 00000000 S binder
root      59    2     0      0     ffffffff 00000000 S keventsGEO/0
root      60    2     0      0     ffffffff 00000000 S keventsIRDA/0
root      61    2     0      0     ffffffff 00000000 S tg03cap_wq
root      62    2     0      0     ffffffff 00000000 S krfcommd
root      63    2     0      0     ffffffff 00000000 D khsclntd
root      64    2     0      0     ffffffff 00000000 S flush-31:0
system    69    1     7780   704   ffffffff 00000000 S /system/bin/trpd
system    70    1     684    252   ffffffff 00000000 S /system/bin/tgmd
system    71    1     10616  1036  ffffffff 00000000 S /system/bin/tmsd
system    72    1     704    284   ffffffff 00000000 S /system/bin/servicemanage
r
root      73    1     4416   636   ffffffff 00000000 S /system/bin/vold
root      74    1     3640   572   ffffffff 00000000 S /system/bin/netd
root      75    1     564    252   ffffffff 00000000 S /system/bin/debuggerd
root      76    1     3860   392   ffffffff 00000000 S /system/bin/qmuxd
radio     77    1     17188  2520  ffffffff 00000000 S /system/bin/rild
root      78    1     115204 27704 ffffffff 00000000 S zygote
media     79    1     32956  5796  ffffffff 00000000 S /system/bin/mediaserver
bluetooth 80    1     1164   708   ffffffff 00000000 S /system/bin/dbus-daemon
root      81    1     720    340   ffffffff 00000000 S /system/bin/installd
keystore  82    1     1516   396   ffffffff 00000000 S /system/bin/keystore
root      87    1     700    300   ffffffff 00000000 S /system/bin/acceld
root      88    1     716    324   ffffffff 00000000 S /system/bin/geomagneticd
root      89    1     2748   312   ffffffff 00000000 S /system/bin/orientationd
shell     92    1     3308   188   ffffffff 00000000 S /sbin/adbd
root      93    2     0      0     ffffffff 00000000 S usb_mass_storag
root      99    2     0      0     ffffffff 00000000 S mmcqd
system    153   78    300012 55004 ffffffff 00000000 S system_server
root      175   1     4636   848   ffffffff 00000000 S /system/bin/CKPD-daemon
app_26    244   78    162892 21748 ffffffff 00000000 S com.atok.mobile.im.servic
e
radio     249   78    170236 24844 ffffffff 00000000 S com.android.phone
app_36    253   78    153152 18500 ffffffff 00000000 S com.toshiba.nx.widget.ala
rm
app_16    257   78    166444 22224 ffffffff 00000000 S com.softspb.toshiba.weath
er
app_75    261   78    223300 38012 ffffffff 00000000 S com.toshiba.nx.screen
app_5     302   78    180552 26740 ffffffff 00000000 S com.google.process.gapps
app_81    334   78    158820 23388 ffffffff 00000000 S com.toshiba.recommend.ser
vice
app_81    367   334   1000   716   ffffffff 00000000 S logcat
app_66    382   78    160164 21532 ffffffff 00000000 S com.toshiba.nx.twitter
app_25    391   78    159992 20772 ffffffff 00000000 S com.android.providers.cal
endar
app_7     480   78    156964 21788 ffffffff 00000000 S com.android.email
app_20    519   78    165120 26156 ffffffff 00000000 S com.google.android.gm
root      525   2     0      0     ffffffff 00000000 S flush-179:0
audio     543   78    176160 23136 ffffffff 00000000 S jp.pixela.StationMobile
app_62    604   78    159860 24348 ffffffff 00000000 S com.android.alarmclock
fcdial    631   78    161936 23084 ffffffff 00000000 S com.android.contactsnx
fcdial    640   78    168044 23196 ffffffff 00000000 S com.android.contactsnx:re
mote
app_46    641   78    159368 20588 ffffffff 00000000 S com.redbend.dmc
app_82    652   78    153400 19112 ffffffff 00000000 S com.toshiba.slideshow
app_4     658   78    157152 23552 ffffffff 00000000 S android.process.media
app_55    667   78    222060 37480 ffffffff 00000000 S android.process.acore
app_89    704   78    160092 21328 ffffffff 00000000 S com.google.android.google
quicksearchbox
app_56    712   78    157256 20152 ffffffff 00000000 S com.google.android.apps.u
ploader
system    722   78    169492 31304 ffffffff 00000000 S com.android.settings
app_30    729   78    153336 18996 ffffffff 00000000 S arcsoft.android.arcslides
how
app_32    744   78    153208 19104 ffffffff 00000000 S com.toshiba.dsacwidget
container 842   78    153152 19448 ffffffff 00000000 S com.android.defcontainer
app_68    865   78    188112 25948 ffffffff 00000000 S com.android.vending
app_87    886   78    153268 18816 ffffffff 00000000 S com.svox.pico
app_52    892   78    170320 26568 ffffffff 00000000 S com.google.android.apps.m
aps:FriendService
app_52    898   78    183976 28744 ffffffff 00000000 S com.google.android.apps.m
aps
shell     928   92    636    324   80076e58 6fd0e83c S /system/bin/sh
shell     930   928   784    336   00000000 6fd0d92c R ps

うーん。さすがガラスマ。糞プロセス盛り沢山。

--

ルートからの展望


dr-x------ root     root              2012-03-07 22:29 config
drwxrwx--- system   cache             2012-03-07 22:30 cache
lrwxrwxrwx root     root              2012-03-07 22:29 sdcard -> /mnt/sdcard
drwxr-xr-x root     root              2012-03-07 22:29 acct
drwxrwxr-x root     system            2012-03-07 22:29 mnt
lrwxrwxrwx root     root              2012-03-07 22:29 d -> /sys/kernel/debug
lrwxrwxrwx root     root              2012-03-07 22:29 etc -> /system/etc
drwxrwx--x system   system            2012-03-07 22:29 persist
drwxr-xr-x root     root              2011-04-18 23:42 system
drwxr-xr-x root     root              1970-01-01 09:00 sys
drwxr-x--- root     root              1970-01-01 09:00 sbin
dr-xr-xr-x root     root              1970-01-01 09:00 proc
-rwxr-x--- root     root         6918 1970-01-01 09:00 init.tg03.rc
-rwxr-x--- root     root        14768 1970-01-01 09:00 init.rc
-rwxr-x--- root     root         1677 1970-01-01 09:00 init.goldfish.rc
-rwxr-x--- root     root       108088 1970-01-01 09:00 init
-rw-r--r-- root     root          118 1970-01-01 09:00 default.prop
drwxrwx--x system   system            2011-05-01 09:17 data
drwx------ root     root              2011-04-18 23:12 root
drwxr-xr-x root     root              2012-03-07 22:29 dev

--
systemぱて(閲覧権限ないので一時ルート)


drwxr-xr-x root     root              2011-04-18 14:42 arcsoft
drwxr-xr-x root     root              2011-04-18 14:42 pixela
drwxr-xr-x root     root              2011-04-18 14:42 usr
drwxr-xr-x root     root              2011-04-18 14:42 extsd
drwxr-xr-x root     shell             2011-04-18 14:42 bin
drwxr-xr-x root     root              2011-04-18 14:42 etc
drwxr-xr-x root     root              2011-04-18 14:42 fonts
-rw-r--r-- root     root         2392 2011-04-18 14:42 build.prop
drwxr-xr-x root     root              2011-04-18 14:42 media
drwxr-xr-x root     root              2011-04-18 14:42 wifi
drwxr-xr-x root     root              2011-04-18 14:42 smotion
drwxr-xr-x root     root              2011-04-18 14:45 app
drwxr-xr-x root     root              2011-04-18 14:42 msm_serial_aux
-rw-r--r-- root     root          649 2011-04-18 14:42 ts.conf
drwxr-xr-x root     root              2011-04-18 14:44 framework
drw-rw-rw- root     root              2012-03-07 14:39 lost+found
drwxr-xr-x root     root              2011-04-18 14:42 lib

--

dataぱて(閲覧権限ないので一時ルート)



drwx------ system   system            2012-03-07 14:39 backup
drwxr-xr-x system   system            2011-05-01 00:00 tombstones
drwxrwxr-x system   system            2011-05-01 00:17 anr
drwxrwxrwx shell    root              2009-02-22 11:29 wpstiles
drwxrwxrwx system   system            2012-03-06 14:14 tms
drwxrwxr-x system   system            2012-03-07 14:44 system
drwxrwx--x system   system            2012-03-07 13:32 dalvik-cache
drwxrwx--- radio    radio             2012-03-07 14:39 radio
drwx------ root     root              2012-03-07 14:48 property
drwxrwx--x system   system            2012-03-07 13:32 app
drwxrwx--x system   system            2011-05-01 00:00 app-private
drwxrwx--x system   system            2011-05-01 00:13 data
drwxrwx--x shell    shell             2009-02-22 11:29 local
drwxrwx--t system   misc              2009-02-22 11:29 misc
drwxr-x--- root     log               2009-02-22 11:29 dontpanic
drwxrwxrwx root     root              2009-02-22 11:29 recovery
drwxrwx--- root     root              2009-02-22 11:29 lost+found