• [免费专栏] Android安全之ADB常用命令



    欢迎新同学的光临
    … …
    人若无名,便可专心练剑


    我不是一条咸鱼,而是一条死鱼啊!


    0x01 ADB 命令(主)

    • 查看当前应用的activity信息
    adb shell dumpsys activity top
    # 把系统中所有应用运行的四大组件都会打印出来
    adb shell dumpsys >> info.txt
    start info.txt
    
    • 1
    • 2
    • 3
    • 4
    • 查看指定包名应用的详细信息
    adb shell dumpsys package  xxx
    
    或进入adb shell使用下面的命令
    dumpsys package xxx
    # 清空应用数据
    adb shell pm clear xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 查看指定进程名或者进程id的内存信息
    adb shell dumpsys meminfo   xxx
    
    • 1
    • 查看指定包名应用的数据库存储信息(包括存储的SQL语句)
    adb shell dumpsys dbinfo xxx
    
    • 1
    • 安装应用包apk文件
    adb intall  xxx.apk
    
    adb install test.apk -r 覆盖安装,保留数据和缓存文件  -d 解决低版本version问题  -s 安装apk到sd卡
    
    • 1
    • 2
    • 3
    • 卸载应用
    adb uninstall  xxx.apk
    
    adb uninstall -k 
    
    可选参数-k的作用为卸载软件但是保留配置和缓存文件
    
    adb shell
          cd data/app
          rm apk包
          exit
          adb uninstall apk包的主包名
          adb install -r apk包
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 删除系统应用
    adb remount (重新挂载系统分区,使系统分区重新可写)
          adb shell
          cd system/app
          rm *.apk
    
    • 1
    • 2
    • 3
    • 4
    • 将设备中的文件放到本地
    adb pull  目标系统中的文件路径(a.txt)  本机系统要存放取出来的路径(a.txt)   
    
    • 1
    • 将本地文件放到设备中
    adb push  本机系统中的文件路径(a.txt)    目标系统中要存放的路径(a.txt)   
    
    • 1
    • 截屏操作
    adb shell screencap -p /sdcard/test.png
    adb pull /sdcard/test.png  D:\img\
    start D:\img\test.png
    
    • 1
    • 2
    • 3
    • 录屏操作
    adb shell screenrecord /sdcard/test.mp4
    
    • 1
    • 输入文本内容
    adb shell input text 'xxx'
    
    • 1
    • 设备的端口转发
    adb forward [(远程端)协议:端口号] [(设备端)协议:端口号]
    adb forward tcp:23946 tcp:23946
    adb forward tcp:8700 jwdp:1786
    
    • 1
    • 2
    • 3
    • 查看设备中可以被调试的应用的进程号
    adb jdwp
    
    • 1
    • 查看当前日志信息
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 非root设备中查看指定debug模式的包名应用沙盒数据
    run-as cn.test.demo
    
    • 1
    • 查看设备的进程信息,或者指定进程的线程信息
    ps | grep 过滤内容
    ps | grep cn.test.demo
    ps -t 19977
    
    • 1
    • 2
    • 3
    • 清空指定包名应用的数据
    pm clear  grep cn.test.demo
    
    • 1
    • 安装设备中的apk文件
    pm install /sdcard/test.apk
    
    • 1
    • 卸载设备中的应用
    pm uninstall cn.test.demo
    
    • 1
    • 启动设备中的应用
    am start -n [包(package)名]/[包名].[活动(activity)名称]
    am start -n com.androidtest/com.androidtest.test
    
    • 1
    • 2
    • 启动一个服务
    am startservice -n [包 (package) 名]/[包名].[服务(service)名]
    am startservice -n com.androidtest2/com.androidtest.test2
    
    • 1
    • 2
    • 发送一个广播
    am broadcast -a [广播动作]
    
    • 1
    • 查看设备的ip地址
    netcfg
    
    • 1
    • 查看设备的端口号信息
    netstat
    
    • 1
    • 运行Java代码(特殊场景使用,把dx命令把dex文件转化成jar包)
    app_process [运行代码目录] [运行主类]
    
    export CLASSPATH=/data/test.jar
    exec /system/bin/app_process /data/cn.test.main
    
    • 1
    • 2
    • 3
    • 4
    • 运行一个dex文件
    dalvikvm -cp [dex文件] [运行主类]
    dalvikvm -cp /data/test.dex cn. Widiankong Main
    
    • 1
    • 2
    • 查看当前应用的CPU消耗信息
    top [-n/-m/-d/-s/-t]
    
    -m // 最多显示多少个进程
    -n // 刷新次数
    -d // 刷新间隔时间(默认5 秒)
    -s // 按哪列排序
    -t // 显示线程信息而不是进程
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 查看系统属性值
    getprop [属性值名称]
    
    • 1
    • 用aapt操作apk命令(查看apk中的信息以及编辑apk程序包)
    aapt dump xmltree [apk包] [需要查看的资源文件xml ]
    
    • 1
    • 用dexdump操作dex命令(查看dex文件的详细信息)
    dexdump [ dex文件路径]
    
    • 1
    • 查看当前进程的内存加载情况(查看当前进程的内存映射信息,比如加载了哪些so文件,dex文件等)
    cat /proc/[pid]/maps
    
    用法:cat /proc/663/maps
    
    • 1
    • 2
    • 3
    • 查看进程的状态信息
    cat /proc/[pid]/status
    
    用法:cat /proc/663/status
    
    • 1
    • 2
    • 3
    • 查看当前应用使用的端口号信息
    cat /proc/[pid]/net/tcp/tcp6/udp/udp6
    
    用法:cat /proc/663/net/tcp/tcp6/udp/udp6
    
    • 1
    • 2
    • 3

    0x02 ADB 命令(次)

    • 查看连接设备
    adb devices
    
    • 1
    • 获取手机root权限
    adb root
    
    • 1
    • 重新挂载系统分区,使系统分区重新可写
    adb remount
    
    • 1
    • 进入到手机设备Shell界面中去
    adb shell
    
    abd shell -s 模拟器编号 命令
    
    • 1
    • 2
    • 3
    • 启动和关闭ADB服务
    # 关闭服务
    adb kill-server
    
    # 启动服务
    adb start-server
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • adb帮助命令
    adb help
    
    • 1
    • 查看bug报告
    adb bugreport
    
    • 1
    • 记录无线通讯日志
    adb shell
    logcat -b radio
    
    • 1
    • 2
    • 获取设备的ID和序列号
    adb get-product
    adb get-serialno
    
    • 1
    • 2
    • 访问数据库SQLite3
    adb shell
    sqlite3
    
    • 1
    • 2
    • 进入系统内指定文件夹
    cd system/sd/data
    
    #ls //列表显示当前文件夹内容
    #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件
    #rm xxx //删除文件xxx
    #rmdir xxx //删除xxx的文件夹
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 点亮屏幕
    adb shellinput keyevent 80
    
    • 1
    • 查看adb版本
    adb version
    
    • 1
    • 将system分区重新挂在为可读写分区,此命令在操作系统目录时很重要
    adb remount
    
    • 1
    • 重启设备,可选参数进入bootloader(刷机模式)或recovery(恢复模式)
    adb reboot bootloader
    adb reboot recovery
    
    • 1
    • 2
    • 杀掉某个进程,一般用于模拟某个bug复现
    adb shell kill pidNumber
    
    # 列出进程列表及其pid
    adb shell ps
    
    # 查看指定进程信息
    adb shell ps -x pid
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 查看单个应用程序的最大内存限制
    adb shell getprop | grep heapgrowthlimit
    
    得到的结果为128M: [dalvik.vm.heapgrowthlimit]: [128m]
    
    这就是说Dalvik Heap size的最大值超过了128M,就很可能发生OOM
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 查看sdk版本
    adb shell getprop | grep version
    
    • 1
    • 查看设备型号信息
    adb shell getprop | grep product
    
    • 1
    • 获取序列号
    获取到的序列号即为adb devices列出来的序列号
    
    adb get-serialno
    
    • 1
    • 2
    • 3
    • 查看wifi密码(需要root权限)
    adb shell cat data/misc/wifi/*.conf
    
    • 1
    • 查看wifi_mac
    adb shell cat /sys/class/net/wlan0/address
    
    • 1
    • 查看后台services信息
    adb shell service list
    
    • 1
    • ADB 录制屏幕命令
    adb shell screenrecord /sdcard/test.mp4
    
    • 1
    • 打电话
    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”
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 移动文件
    adb shell mv /sdcard/1.txt /sdcard/2.text
    移动同一目录下文件相当于重命名文件
    
    • 1
    • 2

    参考链接

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

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


    我自横刀向天笑,去留肝胆两昆仑


  • 相关阅读:
    基于双层共识控制的直流微电网优化调度(Matlab代码实现)
    SpringBoot实现扫码登录
    连接云服务器Docker中的Mysql 详细图文操作(全)
    关于机器学习模型部署过程中遇到的几个error
    Selenium基础 — Selenium元素定位(一)
    知虾数据软件:电商人必备知虾数据软件,轻松掌握市场趋势
    李沐论文精读系列五:DALL·E2(生成模型串讲,从GANs、VE/VAE/VQ-VAE/DALL·E到扩散模型DDPM/ADM)
    petalinux之LED应用编程
    Linux_文件系统(内存角度)
    深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序 计算机竞赛
  • 原文地址:https://blog.csdn.net/Ananas_Orangey/article/details/126219781