PDA

Просмотр полной версии : война с Dep


spider-intruder
15.07.2008, 12:44
Может кому то будет интересно:

Писал сплайсинг апи. Написал. На работе работает дома хер. Отправил друзьям - у всех работает. После долгих разбирательст оказалось что мой процесор дома в ноуте поддерживает DEP (аппаратно)

Ошибка заключалась в том, что память, выделяемая для создания "моста", создавалась с параметром RW и никак не хотела становиться X - даже при явном задании параметров при помощи VirtualProtect.
((Параметр X, однако, удается назначить в Oly для этой паги и код успешно выполняется даже при DEP))
В итоге свою проблему я решил простым методом - я создал свою собственную кучу которой назначил нужные права и все заработало - DEP контролирует только то что создано стандартным методом :-)

В итоге:

unsigned char* _MyFunc =(unsigned char*) malloc(25);

превраилось в:


_heap = HeapCreate(0x00040000, 25, 25);
_memo = HeapAlloc(_heap, 0, 25);
unsigned char* _MyFunc =(unsigned char*) _memo;

ЗЫ:
прочитал еще одну интересную вешь:
Всем известна плохая совместимость Висты с программным обеспечением, написанным до нее — однако, для популярных защитных пакетов
(ASPack, Start Force) в NTDLL.DLL была оставлена специальная «нычка», распознающая запро-
текченные файлы и молчаливо отключающая защитные механизмы Висты, препятствующие их функционированию. Опознание происходит по именам секций PE файла, и, если это '.sforce', '.pcle'
или '.aspack', файл автоматически получает «иммунитет». Сброс поля COFF-заголовка «characteristics» в 010Eh (210E для динамичес-
ких библиотек) также отключает множество защит (даже тех, что еще не появились на свет), причем
SFC (система автоматической проверки целостности системных файлов) не контролирует поле
«characteristics» и потому отключение защиты можно осуществлять даже для системных файлов:
exe, dll, ocx. Естественно, удаленно
этого не сделать и для реализации
атаки необходимо найти дыру в
каком-нибудь приложении, но актуальности угрозы это не снижает.
(с) _xakep.ru кто то там

spider-intruder
15.07.2008, 15:05
Ну раз я уже начал про DEP, давайте рассмотрим все варианты :-)

Пожалуй понятие DEP подробнее чем ТУТ (http://support.microsoft.com/kb/875352/ru) я врядли опишу.

Для отключения DEP (программно) можно изменить ключ в boot.ini на


/NOEXECUTE=OPTIN - контролировать только системные файлы. Ваше ПО будет игнорироваться DEP-ом

или

/NOEXECUTE=ALWAYSOFF - Отключение DEP

Правда изменения вступят в силу после перезагрузки.


Если в в boot.ini стоит:
/NOEXECUTE=OPTOUT - использовать контроль DEP для всех программ, то можно добавить ваше ПО в исключение тут: "Система->Дополнительно->Быстродействие->Параметры->Предотвращение выполнения данных"

либо программно тут:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

необходимо создать строковый параметр: полный путь + имя вашего exe файла и присвоить ему значение
DisableNXShowUI

spider-intruder
15.07.2008, 15:07
классическая атака на DEP:
_http://www.mastropaolo.com/2005/06/04/buffer-overflow-attacks-bypassing-dep-nxxd-bits-part-1/