Собираем коллекцию NOP'ов

Тема в разделе "WASM.ASSEMBLER", создана пользователем Atlantic, 22 июн 2005.

  1. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Предлагаю в данной теме собирать всевозможные замены пресловутому
    Код (Text):
    1. db 90h
    . Главное условие - последовательность инструкций не должна изменять ни одного регистра, включая флаги, портить стек и т.д.



    Итак, мои варианты:
    Код (Text):
    1.  
    2. 1) mov eax, eax
    3. 2) lea eax, [eax]
    4. 3) cmc
    5.    cmc
    6. 4) xchg eax, ebx
    7.    xchg eax, ebx
    8.  




    ну и так далее, кому на сколько хватит фантазии...
     
  2. R_NEW

    R_NEW New Member

    Публикаций:
    0
    Регистрация:
    6 май 2005
    Сообщения:
    86
    Адрес:
    Россия
    Код (Text):
    1. push eax
    2. pop eax


    А длина последовательности инструкций ограничена?
     
  3. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция




    Это испортит стек





    Желательно не больше 7 инструкций.
     
  4. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Надо ввести ограничение на количество команд, иначе во флуд тема перерастет, т.к. холостых действий бесконечно много можно придумать.



    Мои варианты:

    1) jmp/jcc/jecxz $+5

    2) ADD/OR/XOR/etc. с нулем

    3) все cдвиги и вращения на величину, кратную 20h

    4) xhcg с самим собой (не видать было)

    4) всё в категории Действие-Отменяющее Действие (+в мн. числе)



    и тд
     
  5. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Ладно, ставим ограничения:

    1) Не больше 7 инструкций

    2) Не больше 32 байт машинного кода

    3) Сделаем послабление - инструкции могут менять флаги и пользоваться стеком



    _BC_

    А с джампами ты неплохо придумал. Мне это как-то в голову не приходило
     
  6. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    ADD/OR/XOR/etc сотрет флаги, можно использовать все сдвиги на 0 битов (к bsr\bsf тоже относится)



    add: на счет bsr\bsf я не прав, забыл что у него нет imm
     
  7. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Имхо jmp $+x и без разницы что за ним - лучшее что можно придумать.
    Код (Text):
    1.  
    2. marco calign16
    3. {
    4. jmp @f
    5.  align 16
    6. @@:
    7. }
    8.  
     
  8. R_NEW

    R_NEW New Member

    Публикаций:
    0
    Регистрация:
    6 май 2005
    Сообщения:
    86
    Адрес:
    Россия
    jc $ + 2

    cmc

    jc $ + 2

    cmc
     
  9. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    bogrus

    bsr/bsf к тому же и регистр-приемник затрет. Предлагаю для каждой последовательности указывать, изменяет ли она флаги
     
  10. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Да это фигня 7 инструкций.



    push reg(s)/flags

    --- any action(s) ---

    pop reg(s)/flags



    Слишком много сюда входит. Предлагаю ограничиться двумя, максимум 3.
     
  11. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
  12. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Чтобы всем было интереснее, ужесточим ограничения: не больше двух инструкций (в сумме не больше 16 байт машинного кода)
     
  13. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    _BC_



    Оригинально. А вот еще:


    Код (Text):
    1. fxch
    2. fxch
     
  14. R_NEW

    R_NEW New Member

    Публикаций:
    0
    Регистрация:
    6 май 2005
    Сообщения:
    86
    Адрес:
    Россия
    inc eax

    dec eax
     
  15. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    R_NEW

    inc eax

    dec eax

    флаги изменяет
     
  16. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    ASCII-команда(aaa/aad/aam/etc.), обратная ей.



    enter/leave



    call $+5/lea esp, [esp+4]
     
  17. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    push offset next

    ret





    вообще

    lea [xxx+YYY]

    lea [xxx+(-YYY)]
     
  18. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    cmovcc xxx, xxx
     
  19. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    _BC_


    Код (Text):
    1. aad
    2. aam




    это понятно. А вот какая обратная к
    Код (Text):
    1. aaa
    ?
     
  20. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    До хрена можно придумать, наконец-то интересный топик. ;)