連結器與載入器與執行檔格式

將執行檔建置為PIE(位置獨立執行檔)的主要理由為下列何者?

  1. A為了讓執行檔能在任何作業系統上運作
  2. B為了在執行檔中包含所有函式庫
  3. C為了讓執行檔本體的程式碼也能藉由ASLR,在每次執行時放置於不同的位址
查看答案與解析

正確答案:C. 為了讓執行檔本體的程式碼也能藉由ASLR,在每次執行時放置於不同的位址

以往的執行檔是以載入到固定位址為前提建置的,因此即使使用ASLR,也只能錯開函式庫與堆疊,本體程式碼的位址仍會被攻擊者得知。PIE是將本體也建置為位置獨立程式碼,使其無論載入何處都能運作,因此本體的位址也能隨機化。現在許多Linux發行版都將PIE設為預設。

  • A. 並不是用來消弭作業系統間的差異。
  • B. 包含函式庫的是靜態連結。
  • C. 正確。若是固定位址,只有本體會被預測出來。
練習這個領域 前往領域頁面

連結器與載入器與執行檔格式的其他題目

  1. 啟動程式時(Linux的execve等),作業系統的載入器所進行的事項,下列何者正確?
  2. 關於C語言程式中作業系統最初開始執行的位址(進入點,entry point),下列何者正確?
  3. C語言的main函式以「return 3;」結束時,該值3一般會如何處理?
  4. 對執行檔使用strip指令時會發生的事,下列何者正確?
  5. 關於連結器對弱符號(weak symbol)的處理,下列何者正確?

這個領域的比較