Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   Выполнение кода в стеке (https://forum.antichat.xyz/showthread.php?t=52572)

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

Цитата:

Сообщение от DWORD
:

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

DWORD, опкодом называется как поле КодОПерации(КОП), так и полный машинный код данной команды, в зависимости от контекста. Более того, часто под опкодом понимается именно полный код данной инструкции.

Lamia 03.11.2007 03:18

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

DWORD 03.11.2007 21:23

Цитата:

Сообщение от ProTeuS
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

Цитата:

Сообщение от ProTeuS
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

Цитата:

Сообщение от GlOFF
dword Ну а зачем тогда поднял этот разговор, придравшись к высказыванию, зная о чем идет речь? ;)

я вскользь. любя :)

_Great_ 04.11.2007 12:39

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


Время: 19:33