《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 如何利用現代嵌入式開發工具中的堆棧保護功能

如何利用現代嵌入式開發工具中的堆棧保護功能

2022-02-16
來源:IAR Systems

在開發以MCU為核心的嵌入式系統時,當軟件程序向預設的數據結構(通常是一個固定長度的緩沖區)之外的程序調用堆棧的內存地址范圍寫入數據時,就會發生堆棧緩沖區溢出。這幾乎必然會損壞附近的數據,甚至會改變返回函數。如果是有意為之,則這就是我們熟知的堆棧粉碎。防范堆棧緩沖區溢出的一種方法是使用堆棧canary,因其類似于在煤礦中使用金絲雀偵測毒氣而得名。目前,在以IAR Embedded Workbench為代表的領先開發工具的所有最新版本中,均已支持堆棧保護功能。

堆棧保護功能已經成為最新嵌入式開發工具中必要的功能,但要在諸如IAR Embedded Workbench for Arm這樣的行業標桿工具中實現堆棧保護,就要使用一種啟發式算法來確認一個函數是否需要堆棧保護。如果任何函數內定義的局部變量為數組類型或包含數組類型成員的結構類型,則該函數就需要堆棧保護。此外,如果任何局部變量的地址被傳播到函數之外,則該函數也需要堆棧保護。

如果一個函數需要堆棧保護,那么該函數的局部變量將被按序排放,將數組類型的變量在函數堆棧中被放置在盡可能高的地址。在這些變量之后,會放置一個canary元素。在函數入口處,canary被初始化。初始化值取自全局變量 __stack_chk_guard。在函數退出時,代碼會驗證canary元素是否仍然包含初始化值。如果該數值被改變,函數 __stack_chk_fail就會被調用。

以被廣泛使用的IAR Embedded Workbench for Arm嵌入式開發工具為例,使用Project>Options>C/C++ Compiler>Code>Stack protection選項,即可針對被認定為需要保護的函數啟用堆棧保護。

proxy1.png

或者,您也可以使用Project>Options>C/C++ Compiler>Extra Options頁面,指定 --stack_protection命令行來啟用堆棧保護功能。

在實際應用實現堆棧保護

要使用堆棧保護,開發人員必須在應用中定義以下對象:

·extern uint32_t __stack_chk_guard
全局變量 __stack_chk_guard在第一次使用前必須被初始化。如果初始化值是隨機的,則安全性會更高。

·__interwork __nounwind __noreturn void __stack_chk_fail(void)
__stack_chk_fail函數的作用是通知發生了錯誤,然后終止應用。請注意,這個函數的返回地址將指向失效函數。

arm\src\lib\runtime目錄下的文件stack_protection.c提供了 __stack_chk_guard和 __stack_chk_fail函數的參考模板。


總結

由于今天全球半導體供應鏈緊張狀況尚未得到緩解,因此許多MCU等嵌入式應用需要利用開發工具來保持核心技術和器件供應上的靈活性,并最大限度地在不同硬件平臺上重用已完成的軟件。在這種情況下,無論是MCU芯片開發商還是嵌入式系統工程師,都需要利用那些已被業界最廣泛使用的開發工具,如IAR Embedded Workbench for Arm。由于這些工具也是其開發商和行業領先的MCU供應商多年合作的成果,可以針對不同的硬件資源體系和應用環境給出相應的幫助,如IAR Embedded Workbench中的堆棧保護功能,因此可以以更短的研發周期,來實現嵌入式開發人員的研發目標。

AETweidian.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一本一本久久a久久精品综合麻豆| 久久精品国产亚洲5555| 亚洲一区二区三区免费观看| 亚洲国产天堂久久综合网| 国产亚洲毛片在线| 国产欧美大片| 国产精品一区二区男女羞羞无遮挡| 欧美日韩mp4| 欧美精品情趣视频| 欧美剧在线免费观看网站| 欧美国产综合一区二区| 欧美国产日韩一区| 欧美顶级大胆免费视频| 欧美激情欧美激情在线五月| 欧美极品一区| 欧美日韩国产精品一区二区亚洲| 国产亚洲精品久| 欧美影院在线| 欧美一区二区三区视频免费播放 | 亚洲免费成人| 日韩写真视频在线观看| 亚洲毛片在线看| 日韩亚洲成人av在线| 日韩小视频在线观看| 99re6热在线精品视频播放速度 | 亚洲一区三区在线观看| 午夜精品久久99蜜桃的功能介绍| 亚洲欧美日韩国产成人| 午夜精品福利电影| 久久精品国产免费观看| 亚洲国产精品美女| 亚洲精选中文字幕| 一区二区三区精品视频| 亚洲自拍啪啪| 久久精品国产亚洲一区二区三区| 久久久久免费| 欧美高清不卡| 欧美日韩另类综合| 国产精品高潮粉嫩av| 国产欧美一区二区在线观看| 一区二区视频免费完整版观看| 亚洲三级影院| 国内精品久久久久久久果冻传媒| 伊甸园精品99久久久久久| 亚洲日本欧美| 亚洲一区二区三区四区五区午夜| 欧美一区二区精品久久911| 亚洲激情视频网站| 亚洲一区国产精品| 久久国产精品99国产精| 欧美bbbxxxxx| 国产精品免费观看视频| 好男人免费精品视频| 亚洲人成在线观看一区二区| 在线视频一区二区| 欧美一区二区三区日韩| 日韩视频在线播放| 性做久久久久久久久| 狼人天天伊人久久| 欧美日韩视频在线观看一区二区三区| 国产精品久久久久77777| 国内精品亚洲| 一区二区精品在线| 久久黄色网页| 亚洲一区二区免费在线| 久久国内精品自在自线400部| 欧美好吊妞视频| 国产欧美精品一区| 亚洲人成高清| 欧美一区二区三区四区在线观看 | 国产亚洲成人一区| 亚洲精品一区在线观看香蕉| 午夜日韩福利| 亚洲少妇在线| 久久亚洲私人国产精品va| 国产精品va| 亚洲国产高潮在线观看| 亚洲专区在线| 中文一区二区在线观看| 久久亚洲欧美国产精品乐播| 国产精品久久久久久久久久尿| 在线日韩中文| 欧美一区二区视频免费观看| 亚洲四色影视在线观看| 女仆av观看一区| 国产丝袜美腿一区二区三区| 99这里只有精品| 亚洲精品欧美激情| 久久久久久穴| 国产精品一区二区欧美| 一区二区三区视频免费在线观看 | 日韩一级成人av| 久久综合九色综合网站| 国产精品一区二区在线观看不卡| 亚洲一本大道在线| 国产一区在线播放| 日韩一区二区精品| 亚洲美女少妇无套啪啪呻吟| 噜噜噜久久亚洲精品国产品小说| 国产日韩欧美制服另类| 亚洲一本视频| 亚洲午夜精品福利| 欧美久久影院| 亚洲韩国一区二区三区| 亚洲福利视频在线| 91久久精品日日躁夜夜躁国产| 黑人极品videos精品欧美裸| 日韩视频在线观看| 日韩一级大片在线| 亚洲片区在线| 免费短视频成人日韩| 在线播放豆国产99亚洲| 久久福利影视| 久久久噜噜噜久久人人看| 国产视频久久久久久久| 亚洲欧洲99久久| 久久se精品一区二区| 国产精品亚洲аv天堂网| 中文av一区二区| 亚洲专区在线| 国产精品日韩一区二区三区| 亚洲小视频在线| 小黄鸭精品密入口导航| 国产欧美视频一区二区| 午夜精品短视频| 久久精品人人做人人爽| 韩国成人福利片在线播放| 欧美中文字幕第一页| 老妇喷水一区二区三区| 亚洲高清不卡一区| 日韩一区二区福利| 欧美日韩日日骚| 亚洲一二三四区| 久久成人综合网| 樱花yy私人影院亚洲| 亚洲美女黄网| 欧美亚州一区二区三区 | 亚洲人成小说网站色在线| 99pao成人国产永久免费视频| 欧美日韩国产首页| 一二三区精品| 香蕉亚洲视频| 黄色综合网站| 99爱精品视频| 国产精品裸体一区二区三区| 午夜伦欧美伦电影理论片| 久久伊人亚洲| 亚洲精品欧美| 亚洲欧美精品在线| 国模精品娜娜一二三区| 91久久久亚洲精品| 欧美日韩在线播放| 亚洲欧美成人一区二区三区| 久久久蜜臀国产一区二区| 亚洲黄色一区二区三区| 国产一区二区三区久久| 久久精品一区中文字幕| 国产一区免费视频| 亚洲精选视频免费看| 国产精品久久久久久亚洲调教| 性欧美暴力猛交69hd| 牛牛国产精品| 亚洲午夜一区二区三区| 老司机一区二区三区| 日韩天堂av| 久久久久国内| 日韩视频中文| 久久激情综合网| 亚洲精品美女久久久久| 欧美与黑人午夜性猛交久久久| 亚洲黄页视频免费观看| 午夜久久福利| 亚洲福利精品| 香港久久久电影| 亚洲国产精品毛片| 午夜激情亚洲| 亚洲国产另类 国产精品国产免费| 亚洲主播在线观看| 1024成人| 欧美亚洲一区二区三区| 在线视频国产日韩| 欧美一级视频| 亚洲人成网站精品片在线观看 | 亚洲综合好骚| 亚洲成色精品| 久久国产精品99国产精| 日韩视频一区二区三区在线播放免费观看 | 午夜久久一区| 亚洲国产精品国自产拍av秋霞| 欧美一级久久久久久久大片| 亚洲欧洲日产国产网站| 欧美综合77777色婷婷| 亚洲乱码国产乱码精品精98午夜| 久久精品日韩一区二区三区| 一区二区三区欧美在线| 女女同性精品视频| 欧美在线你懂的| 国产精品入口福利| 一区二区三区黄色| 亚洲国产裸拍裸体视频在线观看乱了|