<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Linux內核中一種利用宏對變量賦值的方式

          共 2143字,需瀏覽 5分鐘

           ·

          2021-10-25 00:51

          掃描二維碼

          獲取更多精彩

          嵌入式雜牌軍

          ????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

          ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? 編輯|追夢星空

          ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ??公眾號|嵌入式雜牌軍


          ??編 者 悟 語

          ????

          ? ? ??過去的時間總是可以對上的,只是更多的時候我們關心的是做成了或沒做成什么,可能會有所失,但卻容易忽略了這“”有所失“”是如何造成的。很多事不可能“”嚴絲合縫”的去完成,時間不可能完全的被利用,時間總是會摻入一些沙子,你的雙手并不能抓住所有。你給了自己余暇就要接受那沙子的意義,但要注意每個人時間里摻入沙子的意義是不同的。


          ? ? ?上升之人一直處于半逆境之中;生命回落,逆向生長。


          文 章 導 讀


          ? ? 最近在看Linux內核關于內存管理相關的內容,在內核源碼中看到有一種利用宏對變量進行賦值的一種方式,感覺很不錯,可以借鑒一下哈,分享出來以便大家推而廣之!

          ? ? 閱讀過程中有什么問題可以后臺交流哈,


          1 代碼背景介紹



          ????0)科普——什么是緩沖區(qū)溢出攻擊


          ????緩沖區(qū)溢出是指寫入緩沖區(qū)的數(shù)據(jù)量超過緩沖區(qū)的設計大小,溢出的數(shù)據(jù)覆蓋了相鄰存儲單元中的數(shù)據(jù)。


          ????攻擊方式:攻擊者通過溢出緩沖區(qū)將惡意代碼注入內存,使進程運行時跳轉并執(zhí)行惡意代碼來進行攻擊。


          ????緩沖區(qū)溢出攻擊主要分為棧溢出、堆溢出、格式化字符串溢出和整型變量溢出等,其中以棧溢出最為常見。


          ????1)代碼的目的


          ????為了讓Linux內核更加安全,為了讓緩沖區(qū)溢出攻擊變得困難,Linux內核對內存映射區(qū)域、棧和堆添加了可以選擇起始地址隨機屬性的開關。


          ????2)代碼區(qū)域隨機屬性起作用的條件

          ???

          ????① 首先要看進程描述符成員personality是否設置了ADDR_NO_RANDOMIZE


          ????② 全局變量randomize_va_space所賦的值是多少。


          2 實際代碼



          ????1)代碼的位置


          ??? mm/memory.c文件中100行左右。


          ????2)全局變量可能的賦值

          ????

          ????①?randomize_va_space = 0。


          ????關閉虛擬地址空間隨機化,即對上面的區(qū)域起始地址不進行隨機化處理


          ????②?randomize_va_space?= 1。


          ????使內存映射區(qū)和棧的起始地址隨機化(兩個區(qū)域的隨機化處理)。


          ????③?randomize_va_space?= 2


          ????使內存映射區(qū)域、棧和堆的起始地址都進行隨機化處理(三種區(qū)域全部隨機化處理)。


          ????3)實際代碼


          /*
          ?*?Randomize?the?address?space?(stacks(棧),?mmaps(內存映射區(qū)),?brk(堆),?etc.).
          ?*
          ?*?(?When?CONFIG_COMPAT_BRK=y?we?exclude?brk?from?randomization,
          ?*???as?ancient?(libc5?based)?binaries?can?segfault.?)
          ?*/
          int?randomize_va_space?__read_mostly?=
          #ifdef?CONFIG_COMPAT_BRK
          ?????1;
          #else
          ?????2;
          #endif


          ????代碼很簡單,通過CONFIG_COMPAT_BRK定義與否,來對randomize_va_space進行賦值控制。


          ????補充說明:


          #define?__read_mostly??__attribute__((__section__(".data..read_mostly")))


          ????randomize_va_space后面的__read_mostly是將randomize_va_space指定存放到.data..read_mostly段中。


          ????定義到這個段的數(shù)據(jù),再linux內核被加載時,數(shù)據(jù)會自動被存放到cache中,以提高整個系統(tǒng)的執(zhí)行效率。


          ????需要注意的是平臺沒有cache,或者有cache,但是并沒有提供存放數(shù)據(jù)的接口就不能用__read_mostly指定數(shù)據(jù)自動放到cache了

          ? ? 今天就到這吧,希望對小伙伴有所幫助哈,喜歡的話歡迎轉發(fā)、點贊、分享、在看、轉載哈,


          免責聲明:本文內容源于網絡、技術手冊或相關書籍,版權歸原作者所有。如涉及侵權問題,請與我聯(lián)系刪除。


          相關推薦


          uboot(bootloader)相關的知識點匯總


          推薦一款Linux下好用的截圖工具shutter——shutter的安裝、配置與使用


          Linux中消息隊列的使用


          Linux下的共享內存編程


          專輯分享


          Linux專輯


          C語言專輯


          軟實力專輯


          軟件推薦專輯


          ? ??歡迎關注我的公眾號,一起擼代碼,玩技術!


          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  东京热一区二区 | 91吴梦梦无码一区二区在线看 | 91丁香 | 一级片视频在线播放 | 日韩免费高清无码视频 |