GCC 編譯引數

2021-09-27 10:47:13 字數 927 閱讀 1002

安全技術

完全開啟

部分開啟

關閉canary

-fstack-protector-all

-fstack-protecto

-fno-stack-protector

nx-z noexecstack

-z execstack

pie-pie

-no-pie

relro

-z now

-z lazy

-z norelro

關閉所有保護

gcc hello.c -o hello -fno-stack-protector -z execstack -no-pie -z norelro
pie 是編譯時隨機化,由編譯器完成;aslr 是載入時隨機化,由作業系統完成。aslr 將程式執行時的堆疊以及共享庫的載入位址隨機化,而 pie 在編譯時將程式編譯為位置無關、即程式執行時各個段載入的虛擬位址在裝載時確定。開啟 pie 時,編譯生成的是動態庫檔案(shared object)檔案,而關閉 pie 後生成可執行檔案(executable)。

在分析乙個 pie 開啟的二進位制檔案時,只需要關閉 aslr,即可使 pie 和 aslr 都失效。

關閉alsr:

echo 0 > /proc/sys/kernel/randomize_va_space
部分開啟(將 mmap 的基址,stack 和 vdso 頁面隨機化):

echo 1 > /proc/sys/kernel/randomize_va_space
完全開啟(在部分開啟的基礎上增加 heap的隨機化:

echo 2 > /proc/sys/kernel/randomize_va_space

gcc編譯引數

gcc編譯引數 linux寶庫 gcc引數詳解 介紹 gcc and g 分別是gnu的c c 編譯器 gcc g 在執行編譯工作的時候,總共需要4步 1.預處理,生成.i的檔案 預處理器cpp 2.將預處理後的檔案不轉換成組合語言,生成檔案.s 編譯器egcs 3.有彙編變為目標 機器 生成.o的...

gcc編譯引數

gcc main.c o main.out 編譯成指定的名字 gcc main.c o out main.out 編譯成指定名字並儲存到已存在資料夾,必須存在,不然報錯預設情況下,gcc在編譯時 標頭檔案搜尋目錄為 uer include usr local include 庫檔案搜尋目錄為 usr...

gcc 引數 gcc編譯工具簡介

編譯的過程是乙個語言轉換的過程,由人能看懂的程式語言轉換為機器能看懂的二進位制語言。yaos的開發過程中,我們選擇gcc作為這個轉換器。我使用的系統是macos ak 2 yaos akilis uname adarwin ak 2.local 19.3.0 darwin kernel versio...