[Fuzz]Android模糊測試

大搜車-自娛發表於2013-11-18
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測試效果就達到了。

相關文章