Здравствуйте! Есть тестовая программа с уязвимостью buffer overflow, которую я запустил в Immunity debugger. С помощью msfvenom сгенерировал windows/meterpreter/reverse_tcp шеллкод. Вставил шеллкод в передаваемый в программу буфер, перезаписал адрес возврата на начало шеллкода. В дебаггере я вижу как идет выполнение моего шеллкода, но когда дело доходит до инструкции IN или OUT, дебаггер падает. Загуглив, я узнал что данные инструкции выполняются в kernel mode (ring0), а дебаггер работает в ring3 mode. Эксплуатация вне дебагера так же не дает успеха. DEP отключен, если пробую вместо reverse_tcp другой шеллкод, например messagebox_shellcode, который просто показывает окно с текстом, то все работает нормально. Подскажите пожалуйста, в чем может быть дело? Если сгенерировать этот же шеллкод в виде exe и запустить, то meterpreter сессия удачно открывается. DEP, фаервол, антивирус отключены.
Что неудивительно, поскольку из юзермода к портам обращаться нельзя под Windows NT. Если эти инструкции из шеллкода, то вам просто нужно выбрать другой, юзермодовый шеллкод. Сделайте пошаговую отладку этого EXEшника, и сравните с предыдущим вариантом.