PDA

Просмотр полной версии : Выполнение кода в стеке


GlOFF
01.11.2007, 23:51
Вопрос совместимости. Есть следующий код к примеру:
push XXXX
push XXXX
push XXXX
push XXXX
jmp esp
Т.е. положили в стек опкод и прыгнули на его выполнение. На всех ли процессорах разрешен запуск кода в стеке? Просто слышал что новые процесоры запрещают это. Правдо ли???

DWORD
02.11.2007, 00:39
http://www.shellcode.ru/index.php?name=News&file=print&sid=11

Не, не везде будет работать. Опкод это не операция, а ее код! =]

Great:
> Опкод это не операция, а ее код! =]
бред какойто. к чему это?

_Great_
02.11.2007, 10:02
На всех ли процессорах разрешен запуск кода в стеке? Просто слышал что новые процесоры запрещают это. Правдо ли???
Правда. Читай про DEP (Data Execution Prevention).
Винда даже может это программно эмулировать для системных нужд, если проц это не поддерживает.

http://en.wikipedia.org/wiki/Data_Execution_Prevention

ЗЫ. Правда это как-то умудрялись вроде обходить в каких-то случаях, подсовывая адрес WriteProcessMemory или VirtualProtect в стек и готовя там параметры..

DWORD
02.11.2007, 12:22
Great:
> Опкод это не операция, а ее код! =]
бред какойто. к чему это?
:
Т.е. положили в стек опкод и прыгнули на его выполнение
Опкод нельзя исполнить, т.к. это не операция а ее код. Для выполнения операции нужны еще и операнды (а кроме них еще и всякие дополнительные биты, указывающие адрессацию и размерность операндов). Я правда не знаю, что здесь имеется ввиду под опкодом - может быть автор подразумевал всю закодированную команду? Просто в терминологии ассемблируемой команды код операции - это вполне определенный участок команды (обычно, но не всегда, 1 или немного по-больше байтов в начале команды для intel'овских и совместимых процессоров)

ProTeuS
02.11.2007, 14:54
Dword, ты синтакси4еские мнемоники имеешь ввиду, а ре4ьь шла о выполняемом коде\опкодам

_Great_
02.11.2007, 17:10
:

Опкод нельзя исполнить, т.к. это не операция а ее код. Для выполнения операции нужны еще и операнды (а кроме них еще и всякие дополнительные биты, указывающие адрессацию и размерность операндов). Я правда не знаю, что здесь имеется ввиду под опкодом - может быть автор подразумевал всю закодированную команду? Просто в терминологии ассемблируемой команды код операции - это вполне определенный участок команды (обычно, но не всегда, 1 или немного по-больше байтов в начале команды для intel'овских и совместимых процессоров)
DWORD, опкодом называется как поле КодОПерации(КОП), так и полный машинный код данной команды, в зависимости от контекста. Более того, часто под опкодом понимается именно полный код данной инструкции.

Lamia
03.11.2007, 03:18
Раньше это прекрасно работало, весь декриптор помещался в стеке, а сейчас не знаю, но вроде как выполняется!

DWORD
03.11.2007, 21:23
Dword, ты синтакси4еские мнемоники имеешь ввиду, а ре4ьь шла о выполняемом коде\опкодам
Не понял, чего-чего я имею ввиду? :)

ProTeuS
03.11.2007, 23:04
http://en.wikipedia.org/wiki/Opcode

_Great_
03.11.2007, 23:14
DWORD, знаешь, даже с если посчитать, что опкод это код операции, то есть, например, операция NOP c кодом 90h и замечательно выполняется, скажу тебе.
Не веришь - скрин:

http://gr8.cih.ms/uploads/nop.png

ProTeuS
03.11.2007, 23:17
дада, так и есть. вот он:
http://prot.someshit.net/opcode.JPG

DWORD
03.11.2007, 23:29
Не понял что ты этим хотел сказать. Безоперандной инструкции ничего кроме кода операции ненужно, так что это вроде бы очевидно. Или я не так понял тебя?

DWORD
03.11.2007, 23:42
http://en.wikipedia.org/wiki/Opcode
Сам-то читал, что там написано? А написано как раз то, что говорю я, а не вы

inv
03.11.2007, 23:43
приведи цитату а то спор еще на неделю)

DWORD
03.11.2007, 23:48
Там две строчки текста, чего цитировать-то?.. И о чем спорить. Вот любите вы ни о чем поспорить. Особенно касательно русского языка. Вся документация, в т.ч. приведенная Протеусом гласит, что опкод это часть машинной инструкции, а не вся эта инструкция. Хотя мне вообщем-то всеравно, вообще не понимаю людей которые спорят о терминологии, прекрасно друг друга при этом понимая, это выпендреж просто какой-то. Пусть называют как угодно, главное понимание.

GlOFF
03.11.2007, 23:51
Пусть называют как угодно, главное понимание.
dword Ну а зачем тогда поднял этот разговор, придравшись к высказыванию, зная о чем идет речь? ;)

DWORD
03.11.2007, 23:56
dword Ну а зачем тогда поднял этот разговор, придравшись к высказыванию, зная о чем идет речь? ;)
я вскользь. любя :)

_Great_
04.11.2007, 12:39
чел, прекрати спорить. это тупо
топикстартер свой ответ получил.
тема закрыта