簡體   English   中英

如何使C程序的堆棧可執行?

[英]How to make the stack of a C program executable?

有沒有辦法通過編譯使C程序的堆棧可執行?

我做到了

$ gcc -o convert -g convert

然后跑

$ readelf -l convert

檢查堆棧是否可執行但輸出是:

GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x4

使堆棧可執行的正確方法不需要禁用堆棧canaries,這與接受的答案建議不同。

這是正確的方法:

gcc -z execstack ...

這樣做, gcc-z選項被傳遞給鏈接器[ source ]:

關鍵詞

-z與關鍵字關鍵字一起直接傳遞給鏈接器。 有關允許的值及其含義,請參閱鏈接器文檔中的部分。

來自man ld [ 來源 ]:

execstack

將對象標記為需要可執行堆棧。

-fno-stack-protector應該為你做的伎倆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM