www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > Linux閱碼場
[導(dǎo)讀]正如Linus Torvalds曾經(jīng)說過的,大多數(shù)安全問題都是bug造成的,而bug又是軟件開發(fā)過程的一部分,是軟件就有bug。至于是安全還是非安全漏洞BUG,內(nèi)核社區(qū)的做法就是盡可能多的測試,找出更多潛在漏洞這樣近似于黑名單的做法。Greg Kroah-Hartman說:“一旦我們修復(fù)了它,我們就將它放到我們的棧分析規(guī)則中,以便于以后不再重新出現(xiàn)這個(gè)bug?!比绻麤]有2015年11月5號(hào)華盛頓郵報(bào)的一篇關(guān)于內(nèi)核安全性的爆炸性專題報(bào)道《Net of insecurity the kernel of the argument》,內(nèi)核社區(qū)應(yīng)該仍會(huì)固守“A bug is bug”的理念(雖然如今也沒有改變太多)。這篇文章狠狠的批評(píng)了內(nèi)核社區(qū)對(duì)內(nèi)核安全的態(tài)度,批評(píng)Linux “沒有一個(gè)系統(tǒng)性的機(jī)制能在黑客之前發(fā)現(xiàn)和解決安全問題,或引入更新的防御技術(shù)”,“甚至Linux內(nèi)核開發(fā)社區(qū)都沒有一個(gè)首席安全官”等等。

一、知識(shí)背景


正如Linus Torvalds曾經(jīng)說過的,大多數(shù)安全問題都是bug造成的,而bug又是軟件開發(fā)過程的一部分,是軟件就有bug。至于是安全還是非安全漏洞BUG,內(nèi)核社區(qū)的做法就是盡可能多的測試,找出更多潛在漏洞這樣近似于黑名單的做法。Greg Kroah-Hartman說:“一旦我們修復(fù)了它,我們就將它放到我們的棧分析規(guī)則中,以便于以后不再重新出現(xiàn)這個(gè)bug?!?/span>如果沒有2015年11月5號(hào)華盛頓郵報(bào)的一篇關(guān)于內(nèi)核安全性的爆炸性專題報(bào)道《Net of insecurity the kernel of the argument》,內(nèi)核社區(qū)應(yīng)該仍會(huì)固守“A bug is bug”的理念(雖然如今也沒有改變太多)。這篇文章狠狠的批評(píng)了內(nèi)核社區(qū)對(duì)內(nèi)核安全的態(tài)度,批評(píng)Linux “沒有一個(gè)系統(tǒng)性的機(jī)制能在黑客之前發(fā)現(xiàn)和解決安全問題,或引入更新的防御技術(shù)”,“甚至Linux內(nèi)核開發(fā)社區(qū)都沒有一個(gè)首席安全官”等等。

我們都知道內(nèi)核社區(qū)的傳統(tǒng)就是相對(duì)安全性更側(cè)重于性能和功能(這也是各大廠商最關(guān)注的部分),在需要犧牲性能來改善內(nèi)核安全性時(shí)并不愿意折衷處理。其實(shí)從另一個(gè)角度來看,也不是內(nèi)核社區(qū)不想合入有用的安全Patch,從LKML里面關(guān)于LSM或者其他Security相關(guān)的訂閱人數(shù)、世界上獨(dú)立的內(nèi)核安全公司數(shù)量來看,除了一些內(nèi)核安全機(jī)制有相應(yīng)大公司或大社區(qū)維護(hù)(SELinux (NSA)、AppArmor (OpenSuSE/Ubuntu)、PaX / grsecurity (Spender)),以及PaX / grsecurity和內(nèi)核社區(qū)的歷史淵源,所以在全球范圍內(nèi),真實(shí)有效的內(nèi)核安全開發(fā)者是少之又少。

再加上內(nèi)核代碼提交走的流程比較繁瑣,應(yīng)用到具體內(nèi)核版本上,又存在周期長以及版本適配的問題,如下圖,所以導(dǎo)致內(nèi)核在安全方面發(fā)展的速度明顯慢于其他模塊。

  • 一個(gè)Linux內(nèi)核漏洞的修復(fù)從Upstream到發(fā)行版內(nèi)核(生產(chǎn)環(huán)境)的鏈條過長,因?yàn)閷?shí)際情況是沒有人會(huì)真正意義上使用"Upstream"的內(nèi)核;
  • 內(nèi)核穩(wěn)定分支以及發(fā)行版社區(qū)難以跟進(jìn)每一個(gè)安全修復(fù)的分析,回歸測試以及防御手段,甚至?xí)霈F(xiàn)漏掉的情況;
  • Linux內(nèi)核社區(qū)堅(jiān)持"Security through obscurity"哲學(xué),這意味著內(nèi)核社區(qū)從來不主動(dòng)申請(qǐng)CVE漏洞編號(hào),即使如此,2021年1月到8月,有CVE編號(hào)的內(nèi)核漏洞超過110個(gè)
  • 漏洞軍火商有自己的生態(tài),他們并不關(guān)心是否有CVE的存在而只關(guān)注漏洞的成因以及漏洞利用的方法

隨著智能化、數(shù)字化、云化的飛速發(fā)展,全球基于Linux系統(tǒng)的設(shè)備數(shù)以百億計(jì),而這些設(shè)備的安全保障主要取決于主線內(nèi)核的安全性和健壯性。當(dāng)某一內(nèi)核LTS版本被發(fā)有漏洞,這樣相關(guān)的機(jī)器都會(huì)面臨被攻破利用的局面,損失難以估計(jì)。
 Critical & High CVE lifetimes

基于以上歷史原因,內(nèi)核自防護(hù)項(xiàng)目KSPP(Kernel Self Protection Project)應(yīng)運(yùn)而生。KSPP是由Linux基金會(huì)旗下的CII(基礎(chǔ)架構(gòu)聯(lián)盟)管理,其吸納了來自諸多大廠商(Google, RedHat,Intel,ARM等)的工程師進(jìn)行聯(lián)合工作,旨在緩解Linux內(nèi)核自身安全缺陷,增強(qiáng)對(duì)內(nèi)核漏洞的防御,主要參考了主要工作是參考PaX / grsecurity的實(shí)現(xiàn)來移植或者重新實(shí)現(xiàn)類似的功能然后推進(jìn)到Linux內(nèi)核主線。

第一個(gè)加固內(nèi)核安全的Patch合并到了主線Linux 4.6上,自此,KSPP開始了自己的使命,不限于對(duì)以下幾點(diǎn),對(duì)內(nèi)核安全性做了增強(qiáng)和優(yōu)化:
  1. 縮小攻擊面
  2. 限制內(nèi)核的內(nèi)存使用權(quán)限
  3. 只讀數(shù)據(jù)和可執(zhí)行代碼不可寫
  4. 函數(shù)指針和重要變量不可寫
  5. User space和Kernel space內(nèi)存分離
  6. 過濾無用系統(tǒng)調(diào)用
  7. 內(nèi)存完整性
  8. KASLR



二、加固內(nèi)核Config文件配置

從KSPP項(xiàng)目角度出發(fā),以上所有內(nèi)核安全方案的基礎(chǔ),都在于對(duì)內(nèi)核Config文件的加固配置。下面從通用配置、GCC配置、命令行調(diào)試配置、ARM和X86的32位以及64位體系架構(gòu),這幾個(gè)涵蓋面最廣的角度來分別講解具體推薦配置,這些配置不僅用于加固內(nèi)核安全,更可以用在內(nèi)核穩(wěn)定性和性能優(yōu)化上,具體大家可以在實(shí)驗(yàn)環(huán)境下驗(yàn)證效果。

  1. 內(nèi)核通用配置
  2. GCC編譯器
  3. 命令行調(diào)試配置
  4. X86_32
  5. X86_64
  6. ARM
  7. ARM64



三、內(nèi)核通用配置


#Debug開關(guān),以便調(diào)試
CONFIG_BUG=y
#內(nèi)核頁表安全配置
CONFIG_DEBUG_KERNEL=y (4.11版本之前)
CONFIG_DEBUG_RODATA=y (4.11版本)
CONFIG_STRICT_KERNEL_RWX=y (4.11至最新版本)
#報(bào)告危險(xiǎn)內(nèi)存權(quán)限情況(注:不是所有平臺(tái)都適用)
CONFIG_DEBUG_WX=y
#啟用直接物理內(nèi)存訪問
CONFIG_STRICT_DEVMEM=y
CONFIG_IO_STRICT_DEVMEM=y
#SYN 防護(hù)
CONFIG_SYN_COOKIES=y
#多重加固驗(yàn)證常見的結(jié)構(gòu)體異常
CONFIG_DEBUG_CREDENTIALS=y
CONFIG_DEBUG_NOTIFIERS=y
CONFIG_DEBUG_LIST=y
CONFIG_DEBUG_SG=y
CONFIG_BUG_ON_DATA_CORRUPTION=y
CONFIG_SCHED_STACK_END_CHECK=y
#使能seccomp BPF
CONFIG_SECCOMP=y
CONFIG_SECCOMP_FILTER=y
#使能用戶層Ptrace保護(hù)機(jī)制
CONFIG_SECURITY=y
CONFIG_SECURITY_YAMA=y
#使能usercopy邊界檢查,并禁止fallback,以獲得完整的白名單執(zhí)行CONFIG_HARDENED_USERCOPY=y
#CONFIG_HARDENED_USERCOPY_FALLBACK is not set
#CONFIG_HARDENED_USERCOPY_PAGESPAN is not set
#隨機(jī)分配空閑列表,加固meatadata
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_FREELIST_HARDENED=y
#High-order頁分配空閑列表
CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
#使能Slub分配器檢查
CONFIG_SLUB_DEBUG=y
#當(dāng)Higher-level分配的內(nèi)存釋放后立即擦除,需要使能page_poison=1
CONFIG_PAGE_POISONING=y
CONFIG_PAGE_POISONING_NO_SANITY=y
CONFIG_PAGE_POISONING_ZERO=y
#使能內(nèi)核棧保護(hù)
CONFIG_VMAP_STACK=y
#使能引用計(jì)數(shù)檢查
CONFIG_REFCOUNT_FULL=y
#在構(gòu)建時(shí)和運(yùn)行時(shí)檢查str*()和mem*()函數(shù)中可能溢出結(jié)構(gòu)的內(nèi)存拷貝
CONFIG_FORTIFY_SOURCE=y
#避免通過dmesg暴露內(nèi)存地址
CONFIG_SECURITY_DMESG_RESTRICT=y
#使能系統(tǒng)調(diào)用入口上的隨機(jī)內(nèi)核棧偏移量計(jì)算(5.13版本后)
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
#使能內(nèi)存溢出檢測,類似于KASAN,但是開銷幾乎為0,可以全環(huán)境復(fù)現(xiàn)問題時(shí)是使用
CONFIG_KFENCE=y
#使能編譯警告,便于調(diào)試 (5.15版本后)
CONFIG_WERROR=y
#強(qiáng)制IOMMU TLB失效,使設(shè)備永遠(yuǎn)無法訪問過時(shí)的數(shù)據(jù)內(nèi)容CONFIG_IOMMU_DEFAULT_DMA_STRICT=y#在退出函數(shù)時(shí),擦除所有調(diào)用者使用的寄存器痕跡,以防止ROP攻擊CONFIG_ZERO_CALL_USED_REGS=y#禁止物理內(nèi)存直接寫入
#CONFIG_ACPI_CUSTOM_METHOD is not set
#禁止基于brk的ASLR
#CONFIG_COMPAT_BRK is not set
#禁止內(nèi)核內(nèi)存直接寫入
#CONFIG_DEVKMEM is not set
#禁止內(nèi)核Kcore布局圖
#CONFIG_PROC_KCORE is not set
#禁止VDSO ASLR
#CONFIG_COMPAT_VDSO is not set
#建議4.1版本之前關(guān)閉此選項(xiàng),阻斷堆內(nèi)存攻擊
#CONFIG_INET_DIAG is not set
#關(guān)閉傳統(tǒng)PTY接口
#CONFIG_LEGACY_PTYS is not set
#使能SELinux運(yùn)行時(shí)調(diào)整功能
#CONFIG_SECURITY_SELINUX_DISABLE is not set
#出現(xiàn)內(nèi)核oops時(shí),立即重啟
CONFIG_PANIC_ON_OOPS=y
CONFIG_PANIC_TIMEOUT=-1
#關(guān)閉Root用戶通過加載模塊來修改內(nèi)核內(nèi)存
#CONFIG_MODULES is not set
#如果的確需要使用Root權(quán)限來操作內(nèi)核,在使能CONFIG_MODULE=y后,建議打開如下配置:CONFIG_DEBUG_SET_MODULE_RONX=y
CONFIG_STRICT_MODULE_RWX=y
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_FORCE=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH=“sha512”
CONFIG_MODULE_SIG_KEY=“certs/signing_key.pem”



四、GCC


#使能GCC Plugins
CONFIG_GCC_PLUGINS=y
#使能-fstack-protector-strong (gcc 4.9+) 以全范圍覆蓋檢測Stack Canary
#內(nèi)核4.18版本之前,如下配置:
#CONFIG_CC_STACKPROTECTOR=y
#CONFIG_CC_STACKPROTECTOR_STRONG=y
#內(nèi)核4.18版本之后,如下配置:
CONFIG_STACKPROTECTOR=y
CONFIG_STACKPROTECTOR_STRONG=y
#使能在函數(shù)入口初始化所有堆棧變量,要求Clang和GCC 12版本以上CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=y(GCC 12前)
CONFIG_INIT_STACK_ALL_ZERO=y
#系統(tǒng)啟動(dòng)時(shí)收集更多的entropy信息
CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y
#強(qiáng)制所有結(jié)構(gòu)體在傳遞給其他函數(shù)之前進(jìn)行初始化
CONFIG_GCC_PLUGIN_STRUCTLEAK=y
CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=y
#系統(tǒng)調(diào)用推出后擦除堆棧信息,減少堆棧內(nèi)舊數(shù)據(jù)的生命周期CONFIG_GCC_PLUGIN_STACKLEAK=y#隨機(jī)化系統(tǒng)結(jié)構(gòu)的布局。這可能會(huì)對(duì)性能產(chǎn)生巨大的影響,所以請(qǐng)謹(jǐn)慎使用或使用
#CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE=y
CONFIG_GCC_PLUGIN_RANDSTRUCT=y



五、X86_64


#禁止分配內(nèi)存起始階段的64K內(nèi)地址
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
#禁止MSR寄存器寫權(quán)限
#CONFIG_X86_MSR is not set
#使能隨機(jī)分配內(nèi)核和內(nèi)存地址
CONFIG_RANDOMIZE_BASE=y
CONFIG_RANDOMIZE_MEMORY=y
#Libc不再需要用戶空間中的固定位置映射
CONFIG_LEGACY_VSYSCALL_NONE=y
#使能內(nèi)核頁表隔離機(jī)制,以刪除整個(gè)緩存計(jì)時(shí)側(cè)通道類
CONFIG_PAGE_TABLE_ISOLATION=y
#縮小暴露的攻擊面
#CONFIG_IA32_EMULATION is not set
#CONFIG_X86_X32 is not set
#CONFIG_MODIFY_LDT_SYSCALL is not set
#完全刪除vsycall,以避免它成為任何類型的固定位置的ROP目標(biāo)。
vsyscall=none


六、X86_32


#32-bit 內(nèi)核上, 使能PAE#CONFIG_M486 is not set
#CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_X86_PAE=y
#禁止分配內(nèi)存起始階段的64K內(nèi)地址
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
#禁止MSR寄存器寫權(quán)限
#CONFIG_X86_MSR is not set
#使能隨機(jī)分配內(nèi)核地址
CONFIG_RANDOMIZE_BASE=y
#使能內(nèi)核頁表隔離機(jī)制,以刪除整個(gè)緩存計(jì)時(shí)側(cè)通道類
CONFIG_PAGE_TABLE_ISOLATION=y
#禁止16位程序模擬和相關(guān)的LDT操作
#CONFIG_MODIFY_LDT_SYSCALL is not set



七、ARM64


#禁止分配內(nèi)存起始階段的32K內(nèi)地址,不是64K的原因是因?yàn)锳RM加載器需要使用這段地址
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
#使能隨機(jī)分配內(nèi)核地址
CONFIG_RANDOMIZE_BASE=y
#使能PAN模擬器.
CONFIG_ARM64_SW_TTBR0_PAN=y
#使能內(nèi)核頁表隔離機(jī)制,以刪除整個(gè)緩存計(jì)時(shí)側(cè)通道類
CONFIG_UNMAP_KERNEL_AT_EL0=y



八、Arm


#禁止分配內(nèi)存起始階段的32K內(nèi)地址,不是64K的原因是因?yàn)锳RM加載器需要使用這段地址
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
#最大化用戶空間內(nèi)存和ASLR
CONFIG_VMSPLIT_3G=y
#對(duì)于老的Qualcomm內(nèi)核版本,如下配置
CONFIG_STRICT_MEMORY_RWX=y
#使能PXN/PAN模擬器
CONFIG_CPU_SW_DOMAIN_PAN=y
#禁止陳舊接口,縮減攻擊面
#CONFIG_OABI_COMPAT is not set



九、進(jìn)程命令行調(diào)試配置


#擦除Slab和頁分配的內(nèi)存(5.3版本后)
init_on_alloc=1
init_on_free=1
#使能系統(tǒng)調(diào)用入口上的隨機(jī)內(nèi)核棧偏移量計(jì)算(5.13版本后)
randomize_kstack_offset=on
#禁用slab合并,使得許多堆溢出攻擊更加困難
slab_nomerge
#始終啟用內(nèi)核頁表隔離,即使CPU聲稱它對(duì)Meltdown是安全的
pti=on
#預(yù)防L1TF
nosmt
#使能SLUB redzoning和健康檢查
slub_debug=ZF
#使能Slab/Slub分配器的內(nèi)存溢出檢測功能,需在內(nèi)核5.3后版本上,使能CONFIG_SLUB_DEBUG=y
slub_debug=P
#使能伙伴系統(tǒng)分配器的內(nèi)存溢出檢測功能,需要在內(nèi)核5.3版本上,使能CONFIG_PAGE_POISONING=y
page_poison=1
#強(qiáng)制IOMMU TLB失效,使設(shè)備永遠(yuǎn)無法訪問過時(shí)的數(shù)據(jù)內(nèi)容
iommu.passthrough=0 iommu.strict=1



十、結(jié)論


內(nèi)核安全問題,牽一發(fā)而動(dòng)全身,尤其是在配置方面,所以如果有的時(shí)候在穩(wěn)定性或者性能優(yōu)化上卡住,不妨從內(nèi)核配置的角度,結(jié)合上文的詳細(xì)說明,換個(gè)角度來分析問題,可能會(huì)有更好的收獲。這篇文章著重從內(nèi)核安全配置的角度來分析了KSPP,在LSM機(jī)制、漏洞利用分析、棧溢出攻擊等方面會(huì)有真實(shí)利用場景,后續(xù)會(huì)逐步更新相關(guān)文章。
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

Zephyr開源項(xiàng)目由Linux基金會(huì)維護(hù),是一個(gè)針對(duì)資源受限的嵌入式設(shè)備優(yōu)化的小型、可縮放、多體系結(jié)構(gòu)實(shí)時(shí)操作系統(tǒng)(RTOS)。近年來,Zephyr RTOS在嵌入式開發(fā)中的采用度逐步增加,支持的開發(fā)板和傳感器不斷增加...

關(guān)鍵字: 嵌入式系統(tǒng) 軟件開發(fā) 實(shí)時(shí)操作系統(tǒng) Zephyr項(xiàng)目

在嵌入式系統(tǒng)和高可靠性軟件開發(fā)中,靜態(tài)代碼分析已成為預(yù)防缺陷的關(guān)鍵手段。PC-Lint(現(xiàn)更名為Gimpel Lint)作為行業(yè)領(lǐng)先的C/C++靜態(tài)分析工具,能夠檢測出編譯器難以發(fā)現(xiàn)的隱式錯(cuò)誤和編碼規(guī)范違規(guī)。本文通過實(shí)戰(zhàn)...

關(guān)鍵字: PC-Lint 軟件開發(fā) 靜態(tài)代碼

在軟件開發(fā)和系統(tǒng)運(yùn)維中,內(nèi)存泄漏是一個(gè)常見且棘手的問題。它會(huì)導(dǎo)致系統(tǒng)內(nèi)存逐漸耗盡,進(jìn)而影響應(yīng)用程序的性能和穩(wěn)定性,甚至引發(fā)系統(tǒng)崩潰。無論是用戶態(tài)程序還是內(nèi)核態(tài)模塊,內(nèi)存泄漏都可能悄然發(fā)生。本文將介紹如何結(jié)合 kmemle...

關(guān)鍵字: 軟件開發(fā) 內(nèi)存泄漏 kmemleak

在 AI 重構(gòu)軟件開發(fā)的浪潮中,編程助手領(lǐng)域掀起了一場激烈的資本與技術(shù)競賽。

關(guān)鍵字: AI編程工具 Cursor 軟件開發(fā) 編程助手 AI

智能時(shí)代的嵌入式系統(tǒng)離不開高性能、高效的軟件和先進(jìn)的軟件開發(fā)方式。本文介紹了近期嵌入式軟件開發(fā)的三個(gè)趨勢:1)邊緣計(jì)算作為一種在本地處理和分析數(shù)據(jù)的方式正在快速發(fā)展,邊緣計(jì)算與人工智能的結(jié)合正將智能計(jì)算從以云為中心的模型...

關(guān)鍵字: 嵌入式系統(tǒng) 邊緣計(jì)算 人工智能 虛擬化 軟件開發(fā)

上海2025年1月13日 /美通社/ -- 1月3日,全球第三方檢測認(rèn)證機(jī)構(gòu)TÜV南德意志集團(tuán)(以下簡稱"TÜV南德")為上海電驅(qū)動(dòng)股...

關(guān)鍵字: SPICE 軟件開發(fā) 智能化 汽車行業(yè)

北京2024年12月10日 /美通社/ -- 12月5-6日,由CSDN聯(lián)合高端IT咨詢與教育平臺(tái)Boolan聯(lián)合主辦的「2024全球C++及系統(tǒng)軟件技術(shù)大會(huì)」在上海虹橋萬豪大酒店隆重召開。在AI驅(qū)動(dòng)軟件開發(fā)邁向智能化的...

關(guān)鍵字: C++ 系統(tǒng)軟件 ST 軟件開發(fā)

作為軟件開發(fā)中強(qiáng)大的生成式AI助手,Amazon Q Developer現(xiàn)在能夠加速單元測試、文檔生成、代碼審查,以及運(yùn)營排錯(cuò),讓開發(fā)者專注于更具創(chuàng)造力和有價(jià)值的工作上 北京2024年12月9日 /美通社/ --&nb...

關(guān)鍵字: DEVELOPER 亞馬遜 軟件開發(fā) 生成式AI

在MCU(微控制器單元)軟件開發(fā)中,指針作為一種強(qiáng)大的工具,能夠顯著提高程序的靈活性和性能。然而,指針的使用也伴隨著一系列潛在的風(fēng)險(xiǎn)和陷阱,特別是在資源受限的嵌入式系統(tǒng)中。本文將深入探討MCU軟件開發(fā)中使用指針時(shí)可能遇到...

關(guān)鍵字: MCU 軟件開發(fā) 指針
關(guān)閉