adb命令

Android中开发与逆向常用命令

Posted by JovenHe on July 2, 2019

在开发和逆向过程中还是会有很多很使用的命令值得一记的,有时候网上一搜很多各式命令都出来的,需要筛选才能找到能用的,《Android应用安全防护和逆向分析》一书的第三章中记录了很多实用命令,特此记录一下

非shell命令

指不需要提前用adb shell命令运行的命令

adb shell dumpsys activity top

查看当前应用的activity信息

activity-top.png

可以看到第一个标志是当前应用的包名、进程信息以及activity信息

第二个是应用的view树,因为集成了滑动返回库,所以最外层是SwipeBackLayout这个view

fragment信息.png

如果含有fragment的话,会展示所包含的fragment信息,包括是否隐藏、布局view等信息,例如我这个页面包含三个fragment,WorkbenchFragment、ContactFragment、MineFragment,MineFragment的mHidden为false,所以当前展示页面是MineFragment

而实际还有RxPermissionsFragment、SupportRequestManagerFragment这两个fragment,看后面括号中提示的,可以很明显看出和其他三个不相同,RxPermissionsFragment是RxPermissions相关的,SupportRequestManagerFragment是glide相关的

RxPermissionsFragment:是一个无UI的虚拟的Fragment,我们所有的权限申请、回调都是在这个Fragment中实现的,不需要用户去处理

SupportRequestManagerFragment:是一个无UI的虚拟的Fragment,它是来辅助Glide来进行生命周期管理的。因为当使用Glide加载图片时,Glide不会感知到Activity的销毁。通过这个虚拟的Fragment来感知到Activity的生命周期,并作出及时的反应

adb shell dumpsys package [包名]

查看指定报名应用的详细信息

相当于查看应用的AndroidManifest.xml中的信息,包含应用的关键Activity、Service、ContentProviders、Permissions、版本、Dex位置等信息

adb shell dumpsys meminfo [包名]

查看指定进程名的内存信息。应用必须处于存活状态

dumpsys-meminfo.png

adb shell dumpsys dbinfo [包名]

打印指定包名应用的数据库存储信息

例如打印抖音数据库信息:

adb shell dumpsys dbinfo com.ss.android.ugc.aweme

dbinfo.png

可以看到连接的是app存储下的downloader.db数据库,直接拿到数据库导出到电脑打开:

抖音downloader.png

数据库的结构和打印出来的是一致的。

adb install [apk路径]

安装电脑上的apk文件到手机

adb uninstall [包名]

卸载手机上已安装的app

adb pull [文件路径] [本地路径]

将设备中的文件放到电脑本地

adb push [文件路径] [设备目录路径]

将电脑本地中的文件放到设备上

adb shell screencap [存储路径]

截屏

之前微信跳一跳游戏的破解,有一种方式就是java项目,通过截屏图片pull到本地,然后通过计算得出按压时长模拟按压效果。

adb shell screenrecord [存储路径]

录屏

adb shell input text [text]

例如:adb shell input text ‘12345678’

使获取焦点的文本框填充文本

文本中不能含有中文

adb forward

设备端口转发

例如:

adb jdwp

查看设备中可以被调试的应用的进程号

adb logcat

查看当前日志信息