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

Discussion in 'WASM.ASSEMBLER' started by Flasher, Dec 6, 2011.

  1. Flasher

    Flasher Member

    Blog Posts:
    0
    Joined:
    Jan 31, 2004
    Messages:
    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

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

    newbie New Member

    Blog Posts:
    0
    Joined:
    Dec 2, 2008
    Messages:
    1,246
    Flasher, нагугли Code Perverter от зомбы
     
  4. Flasher

    Flasher Member

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

    shchetinin Member

    Blog Posts:
    0
    Joined:
    May 27, 2011
    Messages:
    715
    Flasher
    В конечном итоге задаче не разрешима. Ну если вопрос покрытия то дизасм, ( CFG, emul) . Нужен сложный и умно тонкий импл erasi - framework .
     
  6. s_d_f

    s_d_f New Member

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

    Flasher Member

    Blog Posts:
    0
    Joined:
    Jan 31, 2004
    Messages:
    640
    Чужое...
    Это dll. Весит 1.75 MB
     
  8. FatMoon

    FatMoon New Member

    Blog Posts:
    0
    Joined:
    Nov 28, 2002
    Messages:
    954
    Location:
    Russia
    я наверно что-то недопонимаю. Обфускация - есть метод запутать реверсера, так? Чем реверсера запутает замена test eax,eax на or eax, eax? Это может прокатить только против сигнатурного анализа, автоматического...
     
  9. Artem_N

    Artem_N Artem N

    Blog Posts:
    0
    Joined:
    Mar 1, 2009
    Messages:
    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.: сам не пробовал.