2013-01-08 62 views
1

我的系統是x86-64 Linux,我嘗試執行系統上堆棧或數據段中的代碼。詳細地說,我首先將一段二進制指令放入一個整數數組(我嘗試將數組放入堆棧或數據段),然後用數組地址替換正常的函數返回地址。每一次,我都有分段錯誤。是否有可能在x86-64上將代碼注入堆棧

我的問題是,x86-64是否有一些分段保護機制來停止堆棧或數據段中的執行行爲?如果這是真的,是否意味着通過緩衝區溢出的代碼注入在x86-64架構中完全停止?

+0

請參閱http://en.wikipedia.org/wiki/Nx-bit –

回答

1

幾乎所有的現代通用架構都有一種方法來阻止您執行某些內存區域。如果操作系統使用這些設施,則取決於操作系統。 Linux會禁止堆棧上的執行以及容易執行的架構上的大部分數據。 x86_64就是其中之一。