推 drkkimo:推一下 講的真詳細 218.164.37.213 08/15
> ==>發信人: StubbornLin.bbs@ptt.cc (Victor), 信區: programming
> : > 現在最新的CPU 很多應該都有防止執行Data區裡的東西的功能
> : > 也就是說 只要這個功能一打開 那些什麼加殼軟體全部變成廢物
> : > 除非它輸出成檔案再執行 就我所知 加殼軟體好像只是把程式碼解壓縮到Data區
> : > 再把執行的指標指向那個開頭
> : > 同樣的 緩衝區溢滿的攻擊也應該會減少 理論上應該是不能
> : 說得太神勇啦 ! 那種 CPU 的架構型號 ? 那家的產品 ? 願聞其詳.
> http://www.computerdiy.com.tw/modules/news/article.php?storyid=1281
> http://www.hkepc.com/hwdb/e0celerondj-2.htm
> Intel Execute Disable Bit
謝謝您的參考資料.
就以前的 Virtual Memory mapper 的硬體保護, 設定某段 page 為 RW RO 或 XO
本來就是可行的. 只是 buffer overflow attack 發生時, 就是因為 buffer
overflow 會造成 memory protection 產生 trap , 所以洩漏 stack 內的
return-address 所在的 stack pointer. 這個位置被當跳板用來跳到原 data
buffer 內的某段預置碼. 讓 data area 的預置碼不能被執行, 應該是 AMD NX
的主要訴求. 也就是某個記憶體區塊是 Non-eXexute 的 DATA ONLY . 但 OS 有
模組設定記憶體為 NX 就有模組能還原為 XO , 而基本上跳板並未能拆除, 如果
再找到系統內的模組能替其更正或搬移, 還是有可能被設定成可執行. 就 stack
的 ret-address 言, 就相當於 jmp ret-address, 而這個 ret-address 指到的
code area 仍會執行那段 code . 如果預置碼就在內應的木馬上, 還是能作用.
這個理論上的不能, 可能不夠完整.
對直接破門而入言, NX-dataonly 是有防護作用.
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234