Вопрос совместимости. Есть следующий код к примеру: Code: push XXXX push XXXX push XXXX push XXXX jmp esp Т.е. положили в стек опкод и прыгнули на его выполнение. На всех ли процессорах разрешен запуск кода в стеке? Просто слышал что новые процесоры запрещают это. Правдо ли???
http://www.shellcode.ru/index.php?name=News&file=print&sid=11 Не, не везде будет работать. Опкод это не операция, а ее код! =] Great: > Опкод это не операция, а ее код! =] бред какойто. к чему это?
Правда. Читай про DEP (Data Execution Prevention). Винда даже может это программно эмулировать для системных нужд, если проц это не поддерживает. http://en.wikipedia.org/wiki/Data_Execution_Prevention ЗЫ. Правда это как-то умудрялись вроде обходить в каких-то случаях, подсовывая адрес WriteProcessMemory или VirtualProtect в стек и готовя там параметры..
: Опкод нельзя исполнить, т.к. это не операция а ее код. Для выполнения операции нужны еще и операнды (а кроме них еще и всякие дополнительные биты, указывающие адрессацию и размерность операндов). Я правда не знаю, что здесь имеется ввиду под опкодом - может быть автор подразумевал всю закодированную команду? Просто в терминологии ассемблируемой команды код операции - это вполне определенный участок команды (обычно, но не всегда, 1 или немного по-больше байтов в начале команды для intel'овских и совместимых процессоров)
DWORD, опкодом называется как поле КодОПерации(КОП), так и полный машинный код данной команды, в зависимости от контекста. Более того, часто под опкодом понимается именно полный код данной инструкции.
Раньше это прекрасно работало, весь декриптор помещался в стеке, а сейчас не знаю, но вроде как выполняется!
DWORD, знаешь, даже с если посчитать, что опкод это код операции, то есть, например, операция NOP c кодом 90h и замечательно выполняется, скажу тебе. Не веришь - скрин:
Не понял что ты этим хотел сказать. Безоперандной инструкции ничего кроме кода операции ненужно, так что это вроде бы очевидно. Или я не так понял тебя?
Там две строчки текста, чего цитировать-то?.. И о чем спорить. Вот любите вы ни о чем поспорить. Особенно касательно русского языка. Вся документация, в т.ч. приведенная Протеусом гласит, что опкод это часть машинной инструкции, а не вся эта инструкция. Хотя мне вообщем-то всеравно, вообще не понимаю людей которые спорят о терминологии, прекрасно друг друга при этом понимая, это выпендреж просто какой-то. Пусть называют как угодно, главное понимание.