重打包防護檢測
一、API
【1】APK簽名校驗:PackageManager.getPackageInfo( )
【2】dex文件校驗:對比classes.dex文件的哈希值
【3】參考鏈接
http://www.droidsec.cn/android應用安全開發之源碼安全/
二、觸發條件
1. 獲取所有反編譯smali文件名的對應列表smali_list
2. 獲取Manifest文件中所有組件名的對應列表component_list
【1】對應到smali語句中的特徵
r'<(?:activity |service |provider |receiver )'
3. 判斷組件對應的文件是否存在
Note
【1】考慮不管是APK簽名校驗,還是dex文件校驗,如果APP源碼暴露,校驗邏輯也會被破解,二次打包總是不可避免的,所以主要去判斷APP是否進行加殼保護,只保留保護程序,隱藏源程序真正的代碼文件
【2】如果有更好的檢測方法和規則,求賜教!
三、漏洞原理
【1】應用沒有進行安全加殼保護,攻擊者可以利用重打包等手段修改程序的代碼邏輯及原始內容,同時上傳仿冒的APP到第三方應用市場,欺騙用戶
【2】更多內容
http://www.jianshu.com/p/6bcc42542997
四、修復建議
【1】建議使用相應的應用安全加固方案,提供對dex、so等文件的保護