Как изменить поток команд?

Тема в разделе "WASM.ASSEMBLER", создана пользователем Medstrax, 13 янв 2010.

  1. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    вызов прерывания, возврат из оного, call, ret, jmp far - есть идеи ?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    cmovXX
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    тьфу, не то совсем.
     
  4. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    естесно надо добавить sysXXX )))
    интересней другое
    не так давно кк задавал вопрос об изменении флагов mov'ом
    аналогично задам вопрос - как изменить поток(последовательность) команд mov'ом?
    Эксепшены не учитываем
     
  5. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    модификация кода не рулит?
     
  6. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    http://wasm.ru/forum/viewtopic.php?id=27850
     
  7. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Сори, неясно выразился, модификация кода не при чем, имелась в виду последовательность выполнения команд. Прямое выполнение может быть нарушено либо условным переходом - jxx, loop, либо безусловным - sysxxx, int - iret, call - ret, jmp, либо эксепшеном, либо внешним прерыванием. А как это сделать с помощью mov? Предполагается что эксепшенов при выполнении не происходит
     
  8. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    http://lurkmore.ru/Взаимоисключающие_параграфы это они?
     
  9. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    афаик без эксепшена (например запись/чтение с 0 адреса) MOVом не как не сделать
     
  10. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    хотя если дальше есть call eax , то можно сделать mov eax, addr :derisive:
     
  11. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    Medstrax
    аналогично push XXXX/ret mov [esp],XXX/ret
     
  12. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    int - iret наличие int совсем не объязательно
    push XXX; в регистр флагов
    push YYY; в сегментный регистр
    push ZZZ; смещение
    iret; отправили программу по адресу YYY:ZZZ
     
  13. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    DRx ловушка на mem access и mov. mov на выгруженную страницу. Что вообще нужно сделать? ;)
     
  14. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    spa, mikl_ - в вашем случае mov не передает управление.
    psr1257 - эксепшены не в счет, предполагается что mov не вызывает эксепшенов и IPI
    Нужно сделать всего ничего - чтобы после команды mov выполнилась не следующая инструкция.
    Для особо непонятливых - к примеру
    mov xxx,xxx
    a1:
    xor eax,eax
    задача в том чтобы после выполнения mov НЕ выполнилась инструкция по адресу а1, то бишь имела место быть передача управления
     
  15. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Medstrax
    Если хорошенько приноровиться, то можно сразу после выполнения mov дёрнуть кабель.
    А ещё, если ограничиться условием, что только mov не должна вызывать исключение, то можно установить TF и вызвать прерывание: mov следующий за int выполнится без исключения, а перед xor eax,eax управление будет передано на обработчик.
    Аналогично можно и способ PSR1257 использовать: запихать адрес следующей за mov инструкции в один из первых четырёх DR. Опять таки mov исключения не вызовет, а следующая инструкция не выполнится.

    Ну и, наверное, можно ещё пару возможностей придумать, которые формально будут удовлетворять поставленному условию, но вряд ли Вам подойдут. Реальность же такова, что mov на x86 (в отличие от, например, arm) не может менять поток инструкций (исключая исключения).
     
  16. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Проблема чтоли. К примеру к сторожевой странице стека обратиться. Явно никаких сепшенов не будет(это ядра проблемы). Или fpu заюзать спустя два кванта отведённые потоку.
     
  17. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Реальность такова что mov _может_ менять поток инструкций ;)
    Про эксепшены я уже говорил - ни сама команда, ни последующие по условию не вызывают эксепшенов
     
  18. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Ахаха, клерк ну не ожидал от тебя такой ахинеи. Сепшен будет, рулит его ядро или нет - неважно
     
  19. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    с crX поиграться
     
  20. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Medstrax
    Ну что ж... с нетерпением жду авторского решения. :)
    Ну не знаю. Я руководствовался последним постом :) :