На днях я поставил Windows Vista. Хочу отметить, что это действительно классная ось, и ее даже чисто эстетические особенности радуют глаз.
Радует, например то что Vista выставляет балл компьютеру в зависимости от его "содержимого"(кстати, мой винт получил 5.2 балла) и далее показывает (например рядом с играми) насколько хорошо та или иная игра пойдет на компьютере.
Но помимо эстетических особенностей, DEP(data execution protection) наконец то и правда выполняет свои функции!
Для сравнения сейчас у меня две ОС
- Код: Выделить всё
Option Explicit
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Sub Form_Load()
Dim A(7) As Byte'
A(0) = &HB8
A(1) = &H10
A(2) = &H0
A(3) = &H0
A(4) = &H0'mov eax,10h
A(5) = &HC2
A(6) = &H10
A(7) = &H0'ret 16
CallWindowProc VarPtr(A(0)), 0, 0, 0, 0
End Sub
В windows xp pro sp2 этот скомпилированный код работает на УРА.
А в windows vista этот код наконец-то начал выдавать ошибку (что он, кстати, обязан делать).
Самое инетересное, что опция DEP так же можно включить и в windows xp.
Она у меня включена. Но остается догадываться - то ли DEP сильно изберательное, то ли дальше окошка с редактированием параметров развития эта технология в windows xp не получила.
Будем надеятся, что это нововведение поможет раз и на всегда избавится от ошибок переполнения буфера и прочего счастья этой категории.