2016-02-29 99 views
0

我在竊聽一個需要主機應用程序允許可執行堆棧的插件。在運行時查詢execstack

這可以通過運行

execstack -s /path/to/my/host 

但是,如果主機應用程序缺乏可執行堆棧標誌(如上面的命令沒有被調用)來實現,運行我的插件只是崩潰主機:

程序接收到的信號SIGSEGV,分段錯誤。

我想避免碰撞,例如,如果可執行堆棧滯後是而不是集合,通過禁用我的代碼的部分自動。

的檢查應該在插件初始化

但是在運行時發生的,我還沒有找到如何在運行時檢測可執行堆棧的可用性(沒有崩潰)的任何文件。

到目前爲止,我發現的唯一的東西是execstack -q /path/to/my/host,但是從/ path/to/my/host加載的插件中看起來很亂。

回答

0

所以似乎沒有更好的解決我的問題比查詢在運行時的保護方案:明確地旗內存是可執行文件,使用

int mprotect(void *addr, size_t len, int prot); 

這主要增加了一個例外executable stack protection在明確定義的內存區域。