android有四大组件:Activity、Service、Content Provider、Broadcast Receiver,四大组件在配置文件AndroidManifest.xml中进行注册,通过反编译工具如apktool来读取配置文件信息。Activity、Service和Broadcast Receiver三大组件没有配置intent-filter属性的exported默认为false,配置了intent-filter属性exported默认为true。Content Provider不同于其他三个组件,不受intent-filter的影响,对于android:minSdkVersion 或 android:targetSdkVersion不大于17时exported默认为true,对于这两个属性值为17以上时,默认值则为false,需要显示声明exported为true,通过借助drozer对app的四大组件进行测试,大致步骤如下:
1、安装jdk、android sdk,确保java和adb已经在系统环境变量path中
2、下载drozer直接安装即可:https://www.mwrinfosecurity.com/products/drozer/
3、将agent.apk安装到手机里,adb install agent.apk,打开app,选择Enbeded Server,选择Enable开启agent server
4、下载sieve用于练习使用drozer
https://www.mwrinfosecurity.com/system/assets/380/original/sieve.apk
5、drozer启动方式①②③
①普通模式,开启USB调试,使用数据线连接pc,进入drozer安装目录,在cmd下建立端口转发,默认使用31415端口
adb forward tcp:31415 tcp:31415 //将pc端31415的所有数据转发到手机上的31415端口
drozer console connect //使用drozer console 连接agent server
②使用wifi的正向连接方式,不需要开启USB调试:
drozer console connect --server 手机IP:port
③infrastructure mode(反向连接),适合网络环境比较复杂的情况下和多个android设备,不需要知道设备的IP,不需要开启USB调试,设备上安装agent,与server互通,server与console互通(这里使用同一电脑),在agent上点击New Endpoint,host为server的IP,端口默认31415,在cmd下输入 drozer server start
在console上新建一个cmd窗口查看设备:drozer console devices (Device ID可以在agent上修改)
连接某一个设备 : drozer console connect mate7
注:如果server与console不同一电脑,连接某一设备:
drozer console connect DeviceID --server ServerIP:port
6、获取手机上所有安装的app包名:run app.package.list 加上”-f [app关键字]”查找某个app,如run app.package.list -f sieve
得到sieve的包名为com.mwr.example.sieve
7、获取sieve的基本信息 run app.package.info -a com.mwr.example.sieve