查看原文
其他

Android adb常用命令

哆啦安全 2022-08-17

The following article is from 橙留香Park Author 橙留香Park

0x01 ADB 命令(主)

  • 查看当前应用的activity信息

adb shell dumpsys activity top
# 把系统中所有应用运行的四大组件都会打印出来
adb shell dumpsys >> info.txt
start info.txt
  • 查看指定包名应用的详细信息

adb shell dumpsys package xxx

或进入adb shell使用下面的命令
dumpsys package xxx
# 清空应用数据
adb shell pm clear xxx
  • 查看指定进程名或者进程id的内存信息

adb shell dumpsys meminfo xxx
  • 查看指定包名应用的数据库存储信息(包括存储的SQL语句)

adb shell dumpsys dbinfo xxx
  • 安装应用包apk文件

adb intall xxx.apk

adb install test.apk -r 覆盖安装,保留数据和缓存文件 -d 解决低版本version问题 -s 安装apk到sd卡
  • 卸载应用

adb uninstall xxx.apk

adb uninstall -k <package_name>

可选参数-k的作用为卸载软件但是保留配置和缓存文件

adb shell
cd data/app
rm apk包
exit
adb uninstall apk包的主包名
adb install -r apk包
  • 删除系统应用

adb remount (重新挂载系统分区,使系统分区重新可写)
adb shell
cd system/app
rm *.apk
  • 将设备中的文件放到本地

adb pull 目标系统中的文件路径(a.txt) 本机系统要存放取出来的路径(a.txt)
  • 将本地文件放到设备中

adb push 本机系统中的文件路径(a.txt) 目标系统中要存放的路径(a.txt)
  • 截屏操作

adb shell screencap -p /sdcard/test.png
adb pull /sdcard/test.png D:\img\
start D:\img\test.png
  • 录屏操作

adb shell screenrecord /sdcard/test.mp4
  • 输入文本内容

adb shell input text 'xxx'
  • 设备的端口转发

adb forward [(远程端)协议:端口号] [(设备端)协议:端口号]
adb forward tcp:23946 tcp:23946
adb forward tcp:8700 jwdp:1786
  • 查看设备中可以被调试的应用的进程号

adb jdwp
  • 查看当前日志信息

adb logcat

用法1:adb logcat -s tag
案例: adb Logcat -s fb

用法2:adb logcat |findstr pname/pid/keyword
案例: adb Logcat |findstr cn.test.demo

或进入adb shell使用下面的命令
Logcat grep tencent
  • 非root设备中查看指定debug模式的包名应用沙盒数据

run-as cn.test.demo
  • 查看设备的进程信息,或者指定进程的线程信息

ps | grep 过滤内容
ps | grep cn.test.demo
ps -t 19977
  • 清空指定包名应用的数据

pm clear grep cn.test.demo
  • 安装设备中的apk文件

pm install /sdcard/test.apk
  • 卸载设备中的应用

pm uninstall cn.test.demo
  • 启动设备中的应用

am start -n [包(package)名]/[包名].[活动(activity)名称]
am start -n com.androidtest/com.androidtest.test
  • 启动一个服务

am startservice -n [包 (package) 名]/[包名].[服务(service)名]
am startservice -n com.androidtest2/com.androidtest.test2
  • 发送一个广播

am broadcast -a [广播动作]
  • 查看设备的ip地址

netcfg
  • 查看设备的端口号信息

netstat
  • 运行Java代码(特殊场景使用,把dx命令把dex文件转化成jar包)

app_process [运行代码目录] [运行主类]

export CLASSPATH=/data/test.jar
exec /system/bin/app_process /data/cn.test.main
  • 运行一个dex文件

dalvikvm -cp [dex文件] [运行主类]
dalvikvm -cp /data/test.dex cn. Widiankong Main
  • 查看当前应用的CPU消耗信息

top [-n/-m/-d/-s/-t]

-m // 最多显示多少个进程
-n // 刷新次数
-d // 刷新间隔时间(默认5 秒)
-s // 按哪列排序
-t // 显示线程信息而不是进程
  • 查看系统属性值

getprop [属性值名称]
  • 用aapt操作apk命令(查看apk中的信息以及编辑apk程序包)

aapt dump xmltree [apk包] [需要查看的资源文件xml ]
  • 用dexdump操作dex命令(查看dex文件的详细信息)

dexdump [ dex文件路径]
  • 查看当前进程的内存加载情况(查看当前进程的内存映射信息,比如加载了哪些so文件,dex文件等)

cat /proc/[pid]/maps

用法:cat /proc/663/maps
  • 查看进程的状态信息

cat /proc/[pid]/status

用法:cat /proc/663/status
  • 查看当前应用使用的端口号信息

cat /proc/[pid]/net/tcp/tcp6/udp/udp6

用法:cat /proc/663/net/tcp/tcp6/udp/udp6

0x02 ADB 命令(次)

  • 查看连接设备

adb devices
  • 获取手机root权限

adb root
  • 重新挂载系统分区,使系统分区重新可写

adb remount
  • 进入到手机设备Shell界面中去

adb shell

abd shell -s 模拟器编号 命令
  • 启动和关闭ADB服务

# 关闭服务
adb kill-server

# 启动服务
adb start-server
  • adb帮助命令

adb help
  • 查看bug报告

adb bugreport
  • 记录无线通讯日志

adb shell
logcat -b radio
  • 获取设备的ID和序列号

adb get-product
adb get-serialno
  • 访问数据库SQLite3

adb shell
sqlite3
  • 进入系统内指定文件夹

cd system/sd/data

#ls //列表显示当前文件夹内容
#rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件
#rm xxx //删除文件xxx
#rmdir xxx //删除xxx的文件夹
  • 点亮屏幕

adb shellinput keyevent 80
  • 查看adb版本

adb version
  • 将system分区重新挂在为可读写分区,此命令在操作系统目录时很重要

adb remount
  • 重启设备,可选参数进入bootloader(刷机模式)或recovery(恢复模式)

adb reboot bootloader
adb reboot recovery
  • 杀掉某个进程,一般用于模拟某个bug复现

adb shell kill pidNumber

# 列出进程列表及其pid
adb shell ps

# 查看指定进程信息
adb shell ps -x pid
  • 查看单个应用程序的最大内存限制

adb shell getprop | grep heapgrowthlimit

得到的结果为128M: [dalvik.vm.heapgrowthlimit]: [128m]

这就是说Dalvik Heap size的最大值超过了128M,就很可能发生OOM
  • 查看sdk版本

adb shell getprop | grep version
  • 查看设备型号信息

adb shell getprop | grep product
  • 获取序列号

获取到的序列号即为adb devices列出来的序列号

adb get-serialno
  • 查看wifi密码(需要root权限)

adb shell cat data/misc/wifi/*.conf
  • 查看wifi_mac

adb shell cat /sys/class/net/wlan0/address
  • 查看后台services信息

adb shell service list
  • ADB 录制屏幕命令

adb shell screenrecord /sdcard/test.mp4
  • 打电话

adb shell am start -a android.intent.action.CALL -d tel:10086
停止应用
adb shell am force-stop package
查看当前 Activity 名称
adb shell dumpsys activity | findstr “mFocusedActivity”
  • 移动文件

adb shell mv /sdcard/1.txt /sdcard/2.text
移动同一目录下文件相当于重命名文件

更多详细命令,后面再补充

参考链接

https://cloud.tencent.com/developer/article/1797357

https://zhuanlan.zhihu.com/p/43731848



推荐阅读

Android ANR解析

Android防逆向基础

Android常见投屏神器

Android JNI动态库逆向

Xcrash是怎么捕获Crash

Android安全测试工具大全

用Asan提前解决NDK疑难crash

玩转Android adb命令(adb降级)

Android NDK Crash定位分析思路

JNI与NDK编程(基础到精通)最全总结

Android系统run-as命令原理(权限访问)

Android NDK开发中快速定位Crash问题

系统定制编译之Android.mk和Android.bp详解

Android和iOS逆向分析/安全检测/渗透测试框架

Android ANR/Crash Log日志分析技巧总结(建议收藏)

Android高级开发中ANR/Native Crash问题的解决方法

干货|Android系统中run-as和su命令的源码解析(升降权限)

Android系统定制/测试(Crash/ANR等Bug/性能分析必备技巧)

Android系统定制之Android.mk和Android.bp语法详解(精通版)


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存