nx:-z execstack / -z noexecstack (關閉 / 開啟) 不讓執行棧上的資料,於是jmp esp就不能用了
canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (關閉 / 開啟 / 全開啟) 棧裡插入cookie資訊
aslr和pie:-no-pie / -pie (關閉 / 開啟) 位址隨機化,另外開啟後會有get_pc_thunk
relro:-z norelro / -z lazy / -z now (關閉 / 部分開啟 / 完全開啟) 對got表具有寫許可權
Gcc編譯時的 w W Wall選項
今天在看乙個makefile時看到了gcc w wall 這句,不明其理,專門檢視了gcc的使用手冊。w的意思是關閉編譯時的警告,也就是編譯後不顯示任何warning,因為有時在編譯之後編譯器會顯示一些例如資料轉換之類的警告,這些警告是我們平時可以忽略的。wall選項意思是編譯後顯示所有警告。w選項...
GCC編譯鏈結時選項
2.3 gcc 鏈結庫檔案的使用 在 linux 下開發軟體時,完全不使用第三方函式庫的情況是比較少見的,通常來講都需要借助乙個或多個函式庫的支援才能夠完成相應的功能。從程式設計師的角度看,函式庫實際上就是一些標頭檔案 h 和庫檔案 so 或者 a 的集合。雖然 linux 下的大多數函式都預設將標...
交叉編譯時選項 march 的必要性
每個編譯器都有預設的 march選項,其值一般都隨主流晶元走。比如老一點的arm交叉編譯器,預設的選項可能是 march armv4t,新一點的則可能是 march armv6等等。用老編譯器編出來的二進位制檔案,只要沒使用特殊指令集,大多數可以跑在新 上,因為arm的向下相容。但是用新編譯器預設選...