如果地址空間佈局隨機化(ASLR)被禁用,我們是否有確定性的mmap?通過確定性,我的意思是如果我用相同的輸入一次又一次地運行相同的應用程序,我會得到相同的地址mmap?我最感興趣的是匿名mmap。如果ASLR被禁用,mmap是確定性的嗎?
回答
如果地址空間佈局隨機化(ASLR)被禁用,我們是否有確定性的mmap?
如果你的應用程序在第i個mmap時刻有完全相同的內存佈局(根據虛擬地址空間的哪些頁面被映射,哪些沒有)。那麼mmap應該在Linux內核中是確定性的。
存在一些可能會改變內存佈局的奇怪情況。例如,附加的命令行參數可以將堆棧轉換爲較低的地址。有很多文件在m運行時(例如語言環境)中進行縮放,並且如果某些文件的大小已從上一次開始更改,那麼內存佈局也會發生更改。即使堆棧消耗也可能會影響它。
如果您的應用程序內存分配(包括大小和分配順序)通過malloc更改,mmap將不確定。所以,如果你的應用程序是線程的;它應該修復malloc調用的順序或限制所有malloc到主線程。
mm/mmap.c: arch_get_unmapped_area - 默認的非固定MMAP地址解析器是確定IIF的VMA樹是相同的,以前MMAP的歷史是一樣的(有一個緩存mm->free_area_cache
其爲活的調用MMAP之間
請注意,不僅命令行參數而且環境都可以將堆棧向下移動。 – 2012-02-20 19:09:56
另外,AUXV矢量可以改變;動態鏈接器和任何共享庫構造函數。 – osgx 2012-02-20 19:38:28
根據我的經驗,它是可重複的。當我在gdb
下運行幾次(具有相同的輸入和條件)的確定性程序(由我編寫)(禁用ASLR)時,指針是相同的。
然而,作爲一個確定性程序是一個屬性,它不是靜態檢測(我只是碰巧知道我編碼的某些程序足夠確定)。
請注意,「確定性程序」意味着沒有線程,一旦線程進入,所有投注都關閉。另外請注意,一些libc工具(例如aio)會在您的背後創建線程」。 – 2012-01-14 22:14:21
如果使用同步原語以嚴格排列所有分配(包括分配線程堆棧)的方式,它仍然可以是線程確定性的。 – 2012-02-20 19:10:54
內核可能會重新映射多次相同的虛擬內存地址。但是,我不會依賴內核每次給你相同的地址,因爲它不是必需的。如果你需要一個固定的地址,並且你需要內核把它放在虛擬內存中的特定位置,使用MAP_FIXED
。
除非目標地址範圍已存在於進程的地址空間中,並且您知道要替換的內容,否則'MAP_FIXED'使用非常危險。否則,你可能會破壞屬於你不知道的程序的其他部分的內存! – 2012-02-20 19:12:02
- 1. mmap的熵的ASLR位()
- 2. 如果我禁用搶佔和irq,udelay是確定性的嗎?
- 3. 以下代碼是否禁用ASLR?
- 4. 如何禁用FreeBSD上的ASLR?
- 5. os.listdir()是確定性的嗎?
- 6. ora_hash是確定性的嗎?
- 7. ALS是確定性的嗎?
- 8. 如果異常被禁用,所有函數都是「noexcept」嗎?
- 9. 檢測Javascript是否被禁用,如果是,則重定向
- 10. 在Mac OS X中禁用ASLR Snow Leopard
- 11. 華廷:確定是否鏈接已禁用=「禁用」屬性
- 12. mmap是內置函數嗎?
- 13. java的hashCode()是確定性的嗎?
- 14. CONVERT是非確定性的嗎?
- 15. 是t-sql確定性中的select *嗎?
- 16. 在python中,set.pop()是確定性的嗎?
- 17. elasticsearch是非確定性的嗎?
- 18. Box2D是完全確定性的嗎?
- 19. JSON.stringify()在V8中是確定性的嗎?
- 20. 不確定如果我的複雜性的分析是正確
- 21. 正確的mmap使用 - Python
- 22. 是用==確定性
- 23. 確定列如果是的
- 24. 網站緩存被禁用,但無法確定它被禁用的位置?
- 25. Haskell - 應用程序的情況下,效果順序是確定性的嗎?
- 26. 如果cookies被禁用,OpenAM會工作嗎?
- 27. 如果cookie被禁用,php會自動處理會話嗎?
- 28. 檢查mmap的地址是否正確
- 29. jQuery如果javascript被禁用/啓用?
- 30. 如果javascript被禁用,備用行爲
你問獨立。 「mmap」的第一個參數是請求的地址嗎? – 2012-01-14 19:50:10
我在問關於匿名的mmap。 – MetallicPriest 2012-01-14 19:51:56
你可以請求任何映射的具體地址 – 2012-01-14 19:56:58