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

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

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亚洲国产精品_日韩亚洲一区二区
91久久综合亚洲鲁鲁五月天| 亚洲永久免费视频| 欧美日韩另类视频| 母乳一区在线观看| 久久久中精品2020中文| 欧美一级淫片播放口| 亚洲午夜激情免费视频| 9l国产精品久久久久麻豆| 亚洲欧洲一区| 亚洲激情影视| 亚洲国产乱码最新视频| 亚洲高清毛片| 亚洲精品1区2区| 亚洲人成网站精品片在线观看| 亚洲国产岛国毛片在线| 亚洲成在人线av| 亚洲国产精品久久91精品| 亚洲国产mv| 亚洲青色在线| 日韩网站在线| 在线亚洲电影| 亚洲欧美国产精品va在线观看| 亚洲一区二区三区精品动漫| 亚洲手机视频| 亚洲欧美国产制服动漫| 亚洲欧美日本国产专区一区| 先锋亚洲精品| 久久精品日产第一区二区| 久久精品国产精品亚洲综合| 久久免费国产精品1| 久久一区精品| 狂野欧美激情性xxxx| 欧美国产日韩一区二区在线观看| 欧美久久久久免费| 国产精品高清在线| 国产日韩欧美日韩大片| 伊人婷婷欧美激情| 亚洲精品乱码久久久久久蜜桃91| 这里只有精品视频| 欧美一区深夜视频| 亚洲人成7777| 亚洲伊人一本大道中文字幕| 久久精品日产第一区二区| 欧美成人激情在线| 欧美午夜精品一区| 国产资源精品在线观看| 在线欧美小视频| 亚洲人成网站精品片在线观看| 99天天综合性| 性18欧美另类| 亚洲免费精彩视频| 午夜精品一区二区三区四区| 久久久免费精品视频| 欧美精品www在线观看| 国产精品国产精品| 伊人久久大香线蕉综合热线| 亚洲精品久久嫩草网站秘色 | 国产私拍一区| 亚洲国产女人aaa毛片在线| 亚洲一区二区三区精品视频| 亚洲国产精品欧美一二99| 亚洲图片在线观看| 久久亚洲精品网站| 欧美日韩在线观看一区二区| 国产在线精品自拍| 在线视频精品一区| 亚洲二区在线观看| 亚洲欧美日韩精品久久亚洲区| 免费视频一区| 国产精品一二三| 亚洲国产精品久久久久久女王| 亚洲手机成人高清视频| 亚洲第一精品福利| 先锋影音一区二区三区| 欧美大胆成人| 国产偷国产偷亚洲高清97cao| 亚洲精品乱码久久久久久蜜桃麻豆| 午夜宅男久久久| 亚洲午夜久久久久久尤物| 免费在线亚洲欧美| 国产精品综合av一区二区国产馆| 最新精品在线| 久久精品夜色噜噜亚洲a∨| 香蕉久久一区二区不卡无毒影院| 欧美精品免费看| 影音先锋久久| 欧美一区二区在线视频| 亚洲在线网站| 欧美日本成人| 亚洲成人在线网| 久久不射电影网| 午夜激情亚洲| 欧美日韩在线播| 亚洲人久久久| 亚洲精品欧美日韩专区| 久久精品最新地址| 国产精品一区二区黑丝| 一区二区久久久久| 99re6这里只有精品| 免费视频一区| 影音先锋亚洲精品| 久久都是精品| 久久九九久精品国产免费直播 | 亚洲色在线视频| av成人福利| 欧美精品aa| 亚洲黄页一区| 最新日韩av| 免费视频最近日韩| 有码中文亚洲精品| 亚洲风情亚aⅴ在线发布| 久久久久久网址| 国产综合精品| 欧美中文字幕不卡| 久久久久久9999| 韩国av一区| 亚洲国产精品成人久久综合一区| 久久精品日产第一区二区三区| 国产区在线观看成人精品| 亚洲伊人一本大道中文字幕| 亚洲欧美日韩精品久久奇米色影视| 欧美午夜精品一区| 亚洲视频在线一区| 亚洲欧美日韩天堂一区二区| 国产精品视频免费观看www| 亚洲一区国产| 久久国产99| 狠狠色香婷婷久久亚洲精品| 久久精品国产视频| 免费在线欧美视频| 亚洲国产另类 国产精品国产免费| 亚洲三级影院| 欧美日本精品一区二区三区| 99视频国产精品免费观看| 亚洲永久精品大片| 国产女人精品视频| 欧美一区二区三区四区夜夜大片| 久久狠狠亚洲综合| 在线不卡欧美| aa级大片欧美三级| 国产精品v片在线观看不卡| 亚洲一区二区三区色| 久久不射电影网| 好吊妞**欧美| 亚洲精品日日夜夜| 欧美日韩三级| 亚洲免费中文| 毛片基地黄久久久久久天堂| 亚洲国产日韩欧美在线动漫| 亚洲视频在线观看三级| 国产精品一页| 亚洲激情网站| 国产精品jizz在线观看美国| 午夜影院日韩| 欧美电影打屁股sp| 亚洲午夜精品在线| 久久九九久精品国产免费直播 | 日韩一区二区久久| 国产精品蜜臀在线观看| 久久成人精品无人区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 红桃视频成人| 一区二区电影免费观看| 国产精品自在线| 亚洲精品视频啊美女在线直播| 国产精品久久国产三级国电话系列 | 亚洲综合第一| 蜜臀久久99精品久久久久久9| 亚洲精品五月天| 欧美一区二区私人影院日本 | 亚洲片区在线| 欧美在线观看视频一区二区三区 | 欧美一区二区三区免费大片| …久久精品99久久香蕉国产 | 亚洲美女网站| 久久精品视频导航| 亚洲美女诱惑| 久久免费的精品国产v∧| 99riav国产精品| 久久久夜精品| 一区二区三区日韩在线观看| 久久综合导航| 亚洲午夜av在线| 欧美成人免费网| 午夜激情一区| 欧美日韩在线播放| 亚洲国产精品999| 国产精品一区在线观看你懂的| 亚洲精品国产精品国产自| 国产美女搞久久| 一区二区欧美日韩| 1000部精品久久久久久久久| 午夜精品久久久| 亚洲欧洲中文日韩久久av乱码| 久久久久成人精品| 亚洲午夜激情在线| 欧美精品二区| 亚洲福利专区| 国产婷婷一区二区| 亚洲欧美中文另类|