2008
02
08
01
44
新的安全性API新增至Vista SP1, XP SP3, 2008 Server
微軟新增安全性API至Windows Vista SP1, Windows XP SP3, 以及Windows Server 2008. 這是關於『資料執行防止』(DEP/NoExecute)的API。
最主要的是新增了SetProcessDEPPolicy這個API。SetProcessDEPPolicy可以覆蓋目前程序的system DEP policy。如果system DEP policy是AlwaysOff或AlwaysOn,SetProcessDEPPolicy會傳回錯誤值。只有當system DEP policy是OptIn或OptOut時,才可以成功使用SetProcessDEPPolicy。一旦DEP是被啟用,所有呼叫SetProcessDEPPolicy都將會被忽略。
BOOL WINAPI SetProcessDEPPolicy(dwFlags:
__in DWORD dwFlags
);
0
PROCESS_DEP_ENABLE
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION
而最主要是由於某些應用程式使用ATL 7.1 以及早期的版本會試圖在不允許執行的記憶體頁面上執行程式,而這會導致NX(NoExecute)錯誤因而終止此程式。 DEP-ATL thunk 模擬可以在開啟DEP功能時,允許程式以不同方式去觸發NX錯誤。
假如 DEP-ATL thunk 模擬是被開啟的,系統會攔截NX錯誤,模擬這些指令,和處理例外讓程式可以繼續被執行。但是如果是設定 PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 來關閉 DEP-ATL thunk模擬,NX錯誤將不會被攔截處理,而這對於在測試是否相容於DEP是相當有用的。
Ref:
http://msdn2.microsoft.com/en-us/library/bb736299(VS.85).aspx
http://blogs.msdn.com/michael_howard/archive/2008/01/29/new-nx-apis-added-to-windows-vista-sp1-windows-xp-sp3-and-windows-server-2008.aspx