Может кому то будет интересно: Писал сплайсинг апи. Написал. На работе работает дома хер. Отправил друзьям - у всех работает. После долгих разбирательст оказалось что мой процесор дома в ноуте поддерживает 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 кто то там
Ну раз я уже начал про DEP, давайте рассмотрим все варианты Пожалуй понятие DEP подробнее чем ТУТ я врядли опишу. Для отключения 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
классическая атака на DEP: _http://www.mastropaolo.com/2005/06/04/buffer-overflow-attacks-bypassing-dep-nxxd-bits-part-1/