97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

網(wǎng)上營(yíng)銷型網(wǎng)站有哪些網(wǎng)絡(luò)廣告營(yíng)銷有哪些

鶴壁市浩天電氣有限公司 2026/01/24 10:16:07
網(wǎng)上營(yíng)銷型網(wǎng)站有哪些,網(wǎng)絡(luò)廣告營(yíng)銷有哪些,搜了網(wǎng)推廣,情侶wordpress模板下載分享一個(gè)最近遇到的棧溢出的經(jīng)典例子。 1. 問題現(xiàn)象 某個(gè)狀態(tài)碼從正常的 0x01 突然變了。 核心代碼簡(jiǎn)化后如下#xff1a; 兩次打印之間只調(diào)用了 read_data()#xff0c;沒有任何代碼修改 status#xff0c;但它就是變了。某個(gè)情況下read_data讀到了24個(gè)字節(jié)的數(shù)據(jù)#xff…分享一個(gè)最近遇到的棧溢出的經(jīng)典例子。1. 問題現(xiàn)象某個(gè)狀態(tài)碼從正常的0x01突然變了。核心代碼簡(jiǎn)化后如下兩次打印之間只調(diào)用了read_data()沒有任何代碼修改status但它就是變了。某個(gè)情況下read_data讀到了24個(gè)字節(jié)的數(shù)據(jù)但是緩沖區(qū)只給了16個(gè)字節(jié)溢出了溢出的字節(jié)覆蓋了status。這種棧溢出篡改數(shù)據(jù)的問題在定位到的時(shí)候覺得很簡(jiǎn)單。但是實(shí)際這種情況并且是偶現(xiàn)問題而且代碼不像是上面這個(gè)簡(jiǎn)化代碼這么簡(jiǎn)單問題代碼藏在一堆代碼之間排查起來還是挺費(fèi)時(shí)間的。2. 原因分析為了理解為何status會(huì)被改我們需要看清函數(shù)棧幀的內(nèi)存布局棧向下增長(zhǎng)局部變量按聲明順序從高地址向低地址分配。strcpy寫入24字節(jié)到16字節(jié)的buffer時(shí)多出的8字節(jié)會(huì)向上溢出覆蓋相鄰的內(nèi)存區(qū)域。注意同一函數(shù)內(nèi)局部變量的布局由編譯器決定不一定按聲明順序。即首先聲明的變量不一定是存放在高地址。棧的生長(zhǎng)方向不能改變這是由 CPU 架構(gòu)決定。測(cè)試代碼運(yùn)行結(jié)果status的地址0x7ffc8b2a3c4f正好在buffer地址0x7ffc8b2a3c40之后15字節(jié)處0x40 0x0f 0x4f。解決方案用安全版本的字符串函數(shù)。2.1 為什么棧會(huì)溢出C語言的strcpy、sprintf等函數(shù)不做邊界檢查。當(dāng)源數(shù)據(jù)大于目標(biāo)緩沖區(qū)時(shí)多余數(shù)據(jù)會(huì)繼續(xù)寫入相鄰內(nèi)存。棧上相鄰的可能是其他局部變量本案例函數(shù)返回地址更危險(xiǎn)會(huì)導(dǎo)致程序崩潰或被利用棧幀指針EBP/RBP2.2 編譯器選項(xiàng)增強(qiáng)檢測(cè)現(xiàn)代編譯器GCC 7有棧保護(hù)機(jī)制Stack Canary但默認(rèn)只保護(hù)返回地址不保護(hù)局部變量之間的溢出??梢酝ㄟ^編譯選項(xiàng)增強(qiáng)檢測(cè)# 棧保護(hù)檢測(cè)返回地址破壞gcc -fstack-protector-all -otesttest.c# AddressSanitizer檢測(cè)所有內(nèi)存越界gcc -fsanitizeaddress -g -otesttest.c使用 AddressSanitizer 重新編譯運(yùn)行立即得到精確報(bào)錯(cuò)12345ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffc8b2a3c50WRITE of size 24 at 0x7ffc8b2a3c40 thread T0#0 0x... in strcpy#1 0x... in read_data test.c:6#2 0x... in data_process test.c:153. 棧溢出預(yù)防措施3.1 代碼規(guī)范禁止使用的危險(xiǎn)函數(shù)危險(xiǎn)函數(shù)安全替代原因strcpystrncpy/strlcpy無邊界檢查sprintfsnprintf無邊界檢查getsfgets無法限制長(zhǎng)度scanf(%s)scanf(%Ns)無邊界檢查3.2 工具靜態(tài)分析# Cppcheckcppcheck --enableall --error-exitcode1 src/# Clang Static Analyzerscan-build make動(dòng)態(tài)檢測(cè)測(cè)試環(huán)境默認(rèn)開啟# Valgrind內(nèi)存檢測(cè)valgrind --leak-checkfull ./test# AddressSanitizerASAN_OPTIONSdetect_stack_use_after_return1 ./test相關(guān)文章嵌入式開發(fā)調(diào)試?yán)?| Sanitizer檢測(cè)器工具 | Valgrind仿真調(diào)試工具的使用推薦一個(gè)好用的嵌入式靜態(tài)代碼掃描工具總結(jié)永遠(yuǎn)不要相信輸入數(shù)據(jù)的長(zhǎng)度即使是可信的傳感器數(shù)據(jù)。編譯器不會(huì)完全保護(hù)你需要主動(dòng)啟用檢測(cè)工具。棧溢出是最常見的內(nèi)存錯(cuò)誤但只要建立起緩沖區(qū)必須傳大小的編碼習(xí)慣90%的問題都可以避免。如果這篇文章對(duì)你有幫助歡迎轉(zhuǎn)發(fā)。歡迎分享你的踩坑經(jīng)歷。
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

用什么語言來做網(wǎng)站網(wǎng)站后臺(tái)怎么管理

用什么語言來做網(wǎng)站,網(wǎng)站后臺(tái)怎么管理,長(zhǎng)沙網(wǎng)站設(shè)計(jì)服務(wù)商,怎么做網(wǎng)站反向鏈接1#xff0c; 概述 1.1 項(xiàng)目背景 傳統(tǒng)的外賣方式就是打電話預(yù)定#xff0c;然而#xff0c;在這種方式中#xf

2026/01/21 15:56:01

南寧市網(wǎng)站開發(fā)公司文字創(chuàng)意logo設(shè)計(jì)

南寧市網(wǎng)站開發(fā)公司,文字創(chuàng)意logo設(shè)計(jì),有什么做網(wǎng)站的國(guó)企,珠海網(wǎng)站建設(shè)品牌策劃VDD_EXT的性能表現(xiàn)直接影響系統(tǒng)的電源完整性與能效比。在低功耗設(shè)計(jì)中#xff0c;必須深入理解其供電機(jī)制、電壓容限

2026/01/22 23:44:01

山西建設(shè)廳官方網(wǎng)站公示網(wǎng)站建設(shè)彳金手指排名

山西建設(shè)廳官方網(wǎng)站公示,網(wǎng)站建設(shè)彳金手指排名,疾控網(wǎng)站建設(shè)宗旨和目的,頁(yè)面設(shè)計(jì)的像膠囊怎么形容隨著半導(dǎo)體工藝逼近物理極限#xff0c;傳統(tǒng)設(shè)計(jì)模式面臨嚴(yán)峻挑戰(zhàn)。本文深入探討了如何利用Deepoc大模型

2026/01/22 23:10:02

建設(shè)維護(hù)網(wǎng)站 未簽訂合同做網(wǎng)站簡(jiǎn)單么

建設(shè)維護(hù)網(wǎng)站 未簽訂合同,做網(wǎng)站簡(jiǎn)單么,前端網(wǎng)站主題怎么做,大鵬網(wǎng)站建設(shè)建站好不好一、陷阱一#xff1a;“小班教學(xué)氛圍好#xff0c;名師一對(duì)一”話術(shù)表現(xiàn)“我們班就20個(gè)人#xff0c;老師能顧到每

2026/01/23 06:27:01