安卓逆向:adb常用命令汇总及常见问题汇总

基本操作

查看 adb 版本

adb version

启动关闭服务

adb start-server 
adb kill-server

检查5037端口是否被占用

若启动之后用USB连接手机之后,找不到设备,我们使用这个命令检查5037端口是否被占用,如果被占用,则提示 cannot bind 'tcp:5037'

adb nodaemon server 

查看连接设备

adb devices

操作设备

进入设备

adb shell

进入多个设备

adb -s <device_name> shell 

获取手机的序列号

adb get-serialno 

查看手机屏幕分辨率

adb shell wm size

显示手机的cpu信息

adb shell cat /proc/cpuinfo

查看手机的设备型号

adb shell getprop ro.product.model

查看 Android 系统版本

adb shell getprop ro.build.version.release

查看手机 cpu类型是 ARM 还是 x86

adb shell getprop ro.product.cpu.abi

获取手机的 mac 地址

adb shell cat /sys/class/net/wlan0/address

查看 IP地址

adb shell ifconfig | grep Mask

显示手机里面所有应用的包名

adb shell pm list packages

查看内存信息

adb shell cat /proc/meminfo

查看硬件与系统属性

adb shell cat /system/build.prop

操作应用

安装 apk

adb install -r `<C:\Users\pando\Desktop\xxx.apk>`

卸载程序

adb uninstall <com.xx.xxx.xxx.xxx>

<com.xx.xxx.xxx.xxx> 为程序的 package。

获取某个应用的包名和这个应用的启动入口

adb shell dumpsys activity | grep mFocusedActivity

其中, com.xxxxxx 即为这个应用的包名,xxx.xxx.xxx.xxx.MainActivity 即为这个应用的启动入口。

通过ADB命令来启动应用

adb shell am start -n <package_name>/<package_name>.<activity_name>

其中,<package_name> 代表应用的包名,<package_name>.<activity_name> 代表这个包的启动入口。

操作文件

从安卓机器 pull 文件到电脑

adb pull </storage/emulated/0/Download/xxx.apk> <C:\Users\xxx\Desktop\xxx>

推送本地文件到安卓指定位置

adb push <C:\Users\xxx\Desktop\xxx\xxx.apk> /storage/emulated/0/Download/

常见问题

adb 版本不匹配

adb server version (36) doesn’t match this client (41); killing…

原因:当前夜神模拟器的adb版本是36,android-sdk里面的adb版本是41,不匹配导致的。

解决:将 \android-sdk-windows\platform-tools 中 adb.exe 替换到模拟器根目录下的 nox_adb.exe。