Android
是谷歌基于Linux
内核开发的移动端操作系统,广泛应用于当前的智能手机,智能手机在硬件上实质是嵌入式系统,因为蜂窝通信涉及比较复杂的基带处理,所以除了主控芯片之外最为重要的控制核心就是基带芯片,ADB
是Android Debug Bridge
的缩写,是安卓系统通过USB
接口提供的调试端口,其驱动称为ADB
驱动,安装ADB
驱动后在系统设置中的开发者选项里勾选USB Debugging
,控制本就可以通过驱动模拟出该调试端口。
AT
端口则是基带模块为外部控制命令预留的接收端口,一般还会预留基带处理log
的输出端口,AT
输入以及log
输出端口既可以由主控芯片即运行其上的系统访问也可以通过USB
接口模拟进行外部输入输出,安装手机设备驱动后一般还需要进入工厂模式打开相应的端口开关,工厂模式进入方法以及端口开关不同厂商均有差异,如Oneplus
手机需要在号码盘键入*#801#
即可进入工厂模式。
P.S. *#*#4636#*#*
用于查看小区信息
打开相应的端口开关控制本就可以通过驱动模拟出对应的AT
端口和串口,配置对应的波特率即可使用串口通信协议进行消息交互。
因为智能手机的嵌入式系统本质,因此软件层面上也符合计算机系统的基本原理,上电启动后会先引导BootLoader
,默认BootLoader
会直接加载系统分区里的内核,也可以选择引导recovery
镜像进入恢复模式,一般各智能手机厂商会通过电源键和上下音量键的不同组合来激发手机上电后进入的模式,更一般的可以通过adb
命令进行控制。
ADB Driver Installer + Android SDK Platform Tools
ADB Driver Installer
: http://adbdriver.com/
Android SDK Platform Tools
:https://developer.android.google.cn/studio/releases/platform-tools
通过USB
连接手机和控制本,安装ADB
驱动后打开USB
调试选项。
打开终端界面进入到SDK
平台工具目录下,目前常用的就是adb
和fastboot
工具,adb
用于system
和recovery
级别的调试,fastboot
用于BootLoader
级别的调试。
fastboot devices
fastboot oem unlock
fastboot flash system system.img
fastboot flash persist persist.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot boot twrp-3.2.1-0-enchilada.img
fastboot reboot
adb devices
adb -s xx
adb reboot
adb reboot bootloader
adb reboot recovery
adb install -r apk_dir
adb pull /sdcard/screen.png hello.png
adb push iperf /sdcard/
adb shell settings put global airplane_mode_on 1
adb shell settings put global airplane_mode_on 0
adb shell settings get global airplane_mode_on
adb shell input keyevent 26
adb shell input keyevent 67
adb shell input tap 1000 550
adb shell input swipe 540 1900 540 1000
adb shell am start com.magicandroidapps.iperf/com.magicandroidapps.iperf.iperf
adb shell input text "iperf -u -c 10.163.200.98 -l 1370 -t 4900 -i 1 -p 9001 -b 200M"
adb shell am force-stop com.magicandroidapps.iperf
adb shell screencap -p /sdcard/screen.png
adb shell dumpsys window displays
实例:OnePlus Root + Iperf移植
1. OEM Unlock
进入手机设置界面在开发者选项中勾选OEM Unlocking
,注意Oneplus
手机的Developer Options
需要在About Phone
里连续敲击Build number
才能激活显示,然后敲入adb reboot bootloader
进入BootLoader
模式,在该模式下使用fastboot
敲入fastboot oem unlock
进行BootLoader
的unlock
,这样就才可以进行接下来镜像的烧写操作,Unlock
之后系统会重置,因此需要在系统中重新激活开发者选项以及打开USB
调试。
2. TWRP Recovery Flash
TWRP
: https://twrp.me/Devices/
下载TWRP
对应手机型号的镜像,然后重新进入BootLoader
模式,1+5
手机使用命令fastboot flash recovery twrp-3.2.2-0-20180721-codeworkx-cheeseburger
直接烧写Recovery
镜像,然后在BootLoader
界面内选择进入Recovery mode
即可启动TWRP
;1+6
手机不在使用单独的Recovery
分区,因此使用命令fastboot boot twrp-3.2.3-0-enchilada.img
直接引导进入TWRP
。
3. Push Magisk & Iperf
Magisk
:https://forum.xda-developers.com/apps/magisk
Iperf C++ Source
:https://iperf.fr/iperf-download.php
Magisk
用于Android
系统提权root
,下载最新版本的zip
包于本地,Iperf
工具用于网络灌包排查速率问题,目前Android
平台下只有APK
没有命令行版本,因此需要使用源码进行平台移植编译,具体流程在此不在涉及。在Recovery
模式下使用adb
命令将Magisk
和Iperf
传送至sdcard
内。
adb shell mkdir /sdcard/root
adb push Magisk-v16.7.zip /sdcard/root
adb push iperf /sdcard/root
adb shell ls -al /sdcard/root
4. TWRP Install Magisk
在TWRP
界面上使用Install
安装Magisk
镜像,完成后reboot
进入系统后可以看到Magisk APP
已经安装,使用adb shell
进入命令行,敲击命令su
进行提权在手机界面弹出的Magisk Shell Granted
窗口点击Forever
即成功,在命令行使用id
命令可以看到当前的用户已经变成了root
。
5. system, root re-mount
因为系统中的分区默认都是只读挂载因此为了将iperf
移植到/system/bin
目录下并赋予可执行权限就必须进行分区的可读重挂载。
cat /proc/mounts | grep system
cat /proc/mounts | grep root
mount | grep root
mount | grep system
mount -o remount,rw rootfs /
mount -o remount,rw /dev/block/platform/soc/1da4000.ufshc/by-name/system /system
mount -o remount,rw /dev/block/sde21 /system
cp /sdcard/root/iperf /system/bin/
chmod 755 /system/bin/iperf
实例:AT口调试
安装有设备驱动的控制本上会模拟出AT
端口,可以看到端口号以及波特率,通过这些信息就可以通过串口工具进行连接。
在窗口中敲入AT
回车显示OK
即表示交互正常,不同厂商AT
命令有差异。