Выполнение кода в стеке

Discussion in 'Реверсинг' started by GlOFF, 1 Nov 2007.

Thread Status:
Not open for further replies.
  1. GlOFF

    GlOFF Elder - Старейшина

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Вопрос совместимости. Есть следующий код к примеру:
    Code:
    push XXXX 
    push XXXX 
    push XXXX 
    push XXXX 
    jmp esp 
    Т.е. положили в стек опкод и прыгнули на его выполнение. На всех ли процессорах разрешен запуск кода в стеке? Просто слышал что новые процесоры запрещают это. Правдо ли???
     
    1 person likes this.
  2. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    http://www.shellcode.ru/index.php?name=News&file=print&sid=11

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

    Great:
    > Опкод это не операция, а ее код! =]
    бред какойто. к чему это?
     
    #2 DWORD, 1 Nov 2007
    Last edited by a moderator: 2 Nov 2007
  3. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Правда. Читай про DEP (Data Execution Prevention).
    Винда даже может это программно эмулировать для системных нужд, если проц это не поддерживает.

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

    ЗЫ. Правда это как-то умудрялись вроде обходить в каких-то случаях, подсовывая адрес WriteProcessMemory или VirtualProtect в стек и готовя там параметры..
     
    #3 _Great_, 2 Nov 2007
    Last edited: 2 Nov 2007
  4. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    :
    Опкод нельзя исполнить, т.к. это не операция а ее код. Для выполнения операции нужны еще и операнды (а кроме них еще и всякие дополнительные биты, указывающие адрессацию и размерность операндов). Я правда не знаю, что здесь имеется ввиду под опкодом - может быть автор подразумевал всю закодированную команду? Просто в терминологии ассемблируемой команды код операции - это вполне определенный участок команды (обычно, но не всегда, 1 или немного по-больше байтов в начале команды для intel'овских и совместимых процессоров)
     
    1 person likes this.
  5. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    Dword, ты синтакси4еские мнемоники имеешь ввиду, а ре4ьь шла о выполняемом коде\опкодам
     
    1 person likes this.
  6. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    DWORD, опкодом называется как поле КодОПерации(КОП), так и полный машинный код данной команды, в зависимости от контекста. Более того, часто под опкодом понимается именно полный код данной инструкции.
     
  7. Lamia

    Lamia Elder - Старейшина

    Joined:
    11 Jul 2007
    Messages:
    186
    Likes Received:
    77
    Reputations:
    -9
    Раньше это прекрасно работало, весь декриптор помещался в стеке, а сейчас не знаю, но вроде как выполняется!
     
    #7 Lamia, 3 Nov 2007
    Last edited by a moderator: 3 Nov 2007
  8. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    Не понял, чего-чего я имею ввиду? :)
     
  9. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    http://en.wikipedia.org/wiki/Opcode
     
  10. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    DWORD, знаешь, даже с если посчитать, что опкод это код операции, то есть, например, операция NOP c кодом 90h и замечательно выполняется, скажу тебе.
    Не веришь - скрин:

    [​IMG]
     
    1 person likes this.
  11. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    дада, так и есть. вот он:
    [​IMG]
     
    1 person likes this.
  12. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    Не понял что ты этим хотел сказать. Безоперандной инструкции ничего кроме кода операции ненужно, так что это вроде бы очевидно. Или я не так понял тебя?
     
  13. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    Сам-то читал, что там написано? А написано как раз то, что говорю я, а не вы
     
  14. inv

    inv Banned

    Joined:
    3 Aug 2007
    Messages:
    261
    Likes Received:
    143
    Reputations:
    -58
    приведи цитату а то спор еще на неделю)
     
  15. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    Там две строчки текста, чего цитировать-то?.. И о чем спорить. Вот любите вы ни о чем поспорить. Особенно касательно русского языка. Вся документация, в т.ч. приведенная Протеусом гласит, что опкод это часть машинной инструкции, а не вся эта инструкция. Хотя мне вообщем-то всеравно, вообще не понимаю людей которые спорят о терминологии, прекрасно друг друга при этом понимая, это выпендреж просто какой-то. Пусть называют как угодно, главное понимание.
     
  16. GlOFF

    GlOFF Elder - Старейшина

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    dword Ну а зачем тогда поднял этот разговор, придравшись к высказыванию, зная о чем идет речь? ;)
     
  17. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    я вскользь. любя :)
     
  18. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    чел, прекрати спорить. это тупо
    топикстартер свой ответ получил.
    тема закрыта
     
Thread Status:
Not open for further replies.