精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: 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
drkkimo:推一下 講的真詳細 218.164.37.213 08/15