"Crawler" - one instruction

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

  1. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Навеяло соседней темой про "mov который меняет поток команд". Не знаю, может уже кто придумал такое до меня.

    Код (Text):
    1.   call @Offset
    2. @Offset:
    3.   pop  eax
    4.   lea  esp,[eax+(@Next-@Offset)]
    5. @Next:
    6.   db 8Fh, 44h, 24h, 00h ; pop  dword ptr [esp+0]
    7.   mov  eax,ds:[0]
    8.   mov  eax,ds:[0]
    9.   mov  eax,ds:[0]
    10.   mov  eax,ds:[0]
    11. ...
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    тогда уж так
    Код (Text):
    1. @Next:
    2.   call @Offset
    3. @Offset:
    4.   pop  eax
    5.   lea  esp,[eax+(@Next-@Offset)]
    6.   jmp @Next
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    PSR1257
    а чё там и не запостили?
     
  4. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    max7C4

    А разве в этом варианте одна/несколько команда будет самокопироваться?...
     
  5. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    ну а поставить по метке @Next команду pop dword [esp+0]
     
  6. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    spa

    Да я не уверен что это то, что нужно автору топега. И вообще они тама счас "nuclear bomb" разрабатывают - таблицы страничной адресации меняют о-О :)

    max7C4

    Если эта команда однажды получила ESP=EIP то она уже больше ничего не даст выполнять - будет только сама выполняццо.
    Немного позже Ваш код потрассирую - а то возможно я "в уме" плохо это делаю ;)
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    еще как нибудь попробуй те stosb с al=170 и edi=eip
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    простите eip+1
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    PSR1257
    Придумали-придумали. Правда по ошибке, т.к. PROFi имел в виду совсем другое:
    http://www.wasm.ru/forum/viewtopic.php?pid=267995#p267995
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Точнее наоборот. :) Имел в виду это, но получил совсем другое. :)
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Хотя больше всего продвинулся в самокопировании Black_mirror:
    http://www.wasm.ru/forum/viewtopic.php?pid=255608#p255608
     
  12. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    PSR1257
    Эквивалентно mov dword ptr ss:[(cs:Next)],XXXX. Недостатки:
    o Стек переключается, чего делать нивкоем случае нельзя.
    o Защиту от записи никто не отменял.
    o Дельтаоффсет зло :)
    Лучше просто подождать:
    Код (Text):
    1.     push 3
    2.     pop gs
    3. @@:
    4.     mov ax,gs
    5.     test ax,ax
    6.     jnz @b
     
  13. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    max7C4

    О, это очаровательно. Однобайтовая stosb (с AL) или movsb.

    l_inc

    Ничто не ново под Луной (c) :)

    Увы.

    CrystalIC

    Да я по приколу, балуюся. Вообще была идея в "ползуне" который не гробит код а только перемещает себя по нему. Еще работаем над тем как его тормознуть, seh неинтересно.

    О, это прикол кстати. Как-то все пользовалсо одним и тем же батничком и уже "привык" что запись в код ничего не вызывает но вот прямо вчера использовал "обычную" сборку и сразу вспомнил зачем нужен VirtualProtect. Однака. При вскрытии первого батничка выяснилося что я все время юзал ALIGN:64 (masm) и этого хватало :derisive:

    Код (Text):
    1.   push 3
    2.   pop gs
    О, я конечно же читал про этот ваш трюк. Элегантно!