Легкая обфускация кода

Тема в разделе "WASM.ASSEMBLER", создана пользователем Flasher, 6 дек 2011.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Доброго времени суток всем.
    Нужны взаимозаменяемые команды которые выполняли одну и ту же функцию и весили бы одинакого.

    Например:
    Находим test eax,eax - это 85 C0 - меняем 85 на 09 - получается or eax,eax и размер не изменился, и выполняет ту же функцию.

    В голову приходит test eax,eax на or eax,eax и xor eax,eax на sub eax,eax
    Естественно перебирая вместо eax еще и ecx,ebx,edx,edi,esi

    Может кто еще какие предложит? Был бы признателен.
     
  2. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Не всегда есть возможность заменить опкод не изменив размер. Альтернативные варианты часто далеко не очевидны. Для 32-битной инструкции test [esp],eax есть 4 опкода 85 04 24, 85 04 64, 85 04 A4, 85 04 E4.
     
  3. newbie

    newbie New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    1.246
    Flasher, нагугли Code Perverter от зомбы
     
  4. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    newbie, спасибо.
    Есть еще одна проблема, тупо искать байты 85 C0 и заменить на 09 C0 не корректно. Как узнать что это наш исполняемый код test eax,eax, а не случайное совпадение байтов?
     
  5. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Flasher
    В конечном итоге задаче не разрешима. Ну если вопрос покрытия то дизасм, ( CFG, emul) . Нужен сложный и умно тонкий импл erasi - framework .
     
  6. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Здесь задачу можно по разному поставить.
    Когда что-то чужое (неизвестно что) нужно обфусцировать понятно, что сложно.
    Если своё, то никто не мешает код отдельно от данных распологать.
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Чужое...
    Это dll. Весит 1.75 MB
     
  8. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    я наверно что-то недопонимаю. Обфускация - есть метод запутать реверсера, так? Чем реверсера запутает замена test eax,eax на or eax, eax? Это может прокатить только против сигнатурного анализа, автоматического...
     
  9. Artem_N

    Artem_N Artem N

    Публикаций:
    0
    Регистрация:
    1 мар 2009
    Сообщения:
    74
    Hydan (http://www.crazyboy.com/hydan/):
    It exploits redundancy in the i386 instruction set by defining sets of functionally equivalent instructions. It then encodes information in machine code by using the appropriate instructions from each set.

    P.S.: сам не пробовал.