Android 未使用編譯器堆棧保護技術解決方法


  • 風險描述

    為了檢測棧中的溢出,引入了Stack Canaries漏洞緩解技術。在所有函數調用發生時,向棧幀內壓入一個額外的被稱作canary的隨機數,當棧中發生溢出時,canary將被首先覆蓋,之后才是EBP和返回地址。在函數返回之前,系統將執行一個額外的安全驗證操作,將棧幀中原先存放的canary和.data中副本的值進行比較,如果兩者不吻合,說明發生了棧溢出。

  • 危害描述

    不使用Stack Canaries棧保護技術,發生棧溢出時系統並不會對程序進行保護。

  • 修復建議

    使用NDK編譯so時,在Android.mk文件中添加:LOCAL_CFLAGS := -Wall -O2 -U_FORTIFY_SOURCE -fstack-protector-all

  •  ndk {
                //選擇要添加的對應cpu類型的.so庫。
            abiFilters 'armeabi', 'armeabi-v7a'
            cFlags "-Wall -O2 -U_FORTIFY_SOURCE -fstack-protector-all"
    
    }

    在項目app的build.gradle中添加


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM