在开发和逆向过程中还是会有很多很使用的命令值得一记的,有时候网上一搜很多各式命令都出来的,需要筛选才能找到能用的,《Android应用安全防护和逆向分析》一书的第三章中记录了很多实用命令,特此记录一下
非shell命令
指不需要提前用adb shell命令运行的命令
adb shell dumpsys activity top
查看当前应用的activity信息
可以看到第一个标志是当前应用的包名、进程信息以及activity信息
第二个是应用的view树,因为集成了滑动返回库,所以最外层是SwipeBackLayout这个view
如果含有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 [包名]
查看指定进程名的内存信息。应用必须处于存活状态
adb shell dumpsys dbinfo [包名]
打印指定包名应用的数据库存储信息
例如打印抖音数据库信息:
adb shell dumpsys dbinfo com.ss.android.ugc.aweme
可以看到连接的是app存储下的downloader.db数据库,直接拿到数据库导出到电脑打开:
数据库的结构和打印出来的是一致的。
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
查看当前日志信息