Уважаемые специалисты асма, подскажите пожалуйста по следующему вопросу. Самому сообразить не удалось. Тут нужен опыт и закалка. Которые,надеюсь преобрету с годами. Вообщем к делу! Исследуется уязвимость переполнения буфера,расположенного в стековом кадре. Hight addr EIP EBP С Т Е К О В Ы Й К А Д Р ......аргументы функции2 EIP EBP .................. Low addr ...................................\buf before overflow \---------------------->-\ buf after overflow \ Функция2 так красиво копирует локальную переменную стекового кадра функции1(В реале конечно всё намного сложнее,так устроен мир,но схемка отражает суть вопроса) . Сам вопрос: 1)DEP влючен(код шеллкода на данном этапе в стеке не исполняется). Я осуществляю переполнение буфера по данной схеме перезаписывая адрес возврата функции2,и указатель базы стекового кадра функции2(база переписывается по любому-она в середине строки). База должна быть равна 0006FAE4 +- 10-14h байт. Это необходимо для последующего отключения DEPa(разрешения выполнения кода в стеке). Символы E4,FA,06 строкой передаю без проблем. А нулевой байт- засада! В середине строки его ясно передавать нельзя. Условия 1) DEP включен пока. (Можно только вызывать функции (с любого адреса из дллок)). 2) Мне достаточно даже чтобы просто EBP стал равным ESP и всё ок. Какие-то инструкции нужны из дллок выполнить типа 1 mov EBP,ESP;retn; (но тут засада перед retn в функции будет торчать драное pop EBP -которое всю малину...)) 2 Просто хотя бы MOV EBP,ESP;...CALL DWORD PTR SS:[EBP+-несколько десятков байт];(Туда адрес я шелкодом положу. все адреса нормальные без нулевых байтов - только стек такой); (Такой последовательности инструкций не нашёл) Какие варианты? И последнее если кто-то знает хотя бы примерный адрес расположения инструкции (JMP ESP или CALL ESP в дллках SP2 или хотя бы название библиотеки напишите расцелую). Жду ответа от добрых людей! Есть же программеры с опытом, со специализацией - агрессивное программирование:переполнение буфера,использование уязвимостей стек,куча,захват нити(Thread'а), отточка шеллкодов,написание эксплойтов. (По моему мнению - существенная разница между написанием программы и шеллкода, шеллкод скорее не пишется, а точится [синоним - подгоняется к своему идеалу методом бесконечных проб и ошибок,доводится до совершенства!]Отточенный шеллкод-это красота, совершенство,которое не встретишь реальном мире,предмет гордости,сокровище,заключённое в объёме каких-то нескольких сотен байт.Как раз тот случай когда поражает не объём, а глубина.) Ждём профессионалов асма! http://www.insidepro.com/kk/063/063r.shtml - Красивая статья по обходу DEP'а. Цитата: "Главное, чтобы shell-код получил управление, и он его получит!Оторвать мыщъх'у хвост, если это не так!" LPVOID VirtualAlloc ( LPVOID lpAddress, SIZE_T dwSize, WORD flAllocationType, DWORD flProtect ); lpAddress Указатель на передаваемый регион памяти dwSize Размер передаваемого региона flAllocationType Тип запроса, MEM_COMMIT (1000h) - передача памяти flProtect Атрибуты защиты, PAGE_EXECUTE_READWRITE (40h) - rwx Что же великий и всемогущий Мыщъх недоговаривает или преднамеренно скрывает как положить шеллкодом напрмер четвёртый параметр функции VirtualAlloc flProtect (40h значение) в переполненный буфер при вкл. DEPe! (00000040h) Та же тема получится, только байтов нулевых поболее будет. Я просто другую функцию юзаю, тема та же - размещение шеллкодом в буфере нулевых байтов(байта) при включенном DEPe Не ради критики, а ради божественного света знаний! Подскажите молодёжи!