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

Форум АНТИЧАТ (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


Время: 13:13