fuzz模糊测试理论应用于android端
1.单独调用Activity
2.发布针对性广播
3.调用查看Apps数据库
等...
方法:
1.反编译apk,可以使用apktool
2.查找AndroidManifest.xml文件内activity,service等,修改Export=“true”,意味着可以由第三方程序调用该服务
3.修改过配置文件后,重新打包成apk
4.对重新打包过的apk进行签名
以Activity为例,想要启动apps的activity有3种方法:
1.同process中可以启动, 因为有相同的uid,instrument测试方法。
2.root权限, 比如root过后的手机, 任意调用所有activity
3.添加activity的属性export=true
1.预处理,测试准备:
检查输入参数, 产生对应的log文件,此处用了log4j。
并通过处理apk, 拿到了packagename和所有的activity 。
通过ddmlib,adb连接到指定的机器
3.启动logcat 监控
通过ddmlib,启动logcat, LogCatOutputReceiver 继承MultiLineReceiver,通过observer模式通知程序处理。
3.开始activity travel
根据步骤一获取的activity列表, 通过ddmlib组成命令循环调用,吊起activity后, 截图保存。
调用命令格式 am start -n 包名\activity名字, 同时监控logcat, 如果出现异常exception, 记录下来。
除去对actvitiytravel产生的logcat日志进行实时分析, 也要对出现的ANR情况进行实时检测, 如果出现ANR,将会立即对所测试应用(包名)进行重装,此种情况较罕见,但属于apk造成bug。
4.结果记录, 保存和输出
保存json格式的结果。
此处4步可以采用我博文内原发布的am相关的测试框架来进行使用。
这部分可以检查出很多问题,而且是不容易被测试出的问题,FUZZ测试效果就达到了。