Доброго времени суток всем. Нужны взаимозаменяемые команды которые выполняли одну и ту же функцию и весили бы одинакого. Например: Находим 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 Может кто еще какие предложит? Был бы признателен.
Не всегда есть возможность заменить опкод не изменив размер. Альтернативные варианты часто далеко не очевидны. Для 32-битной инструкции test [esp],eax есть 4 опкода 85 04 24, 85 04 64, 85 04 A4, 85 04 E4.
newbie, спасибо. Есть еще одна проблема, тупо искать байты 85 C0 и заменить на 09 C0 не корректно. Как узнать что это наш исполняемый код test eax,eax, а не случайное совпадение байтов?
Flasher В конечном итоге задаче не разрешима. Ну если вопрос покрытия то дизасм, ( CFG, emul) . Нужен сложный и умно тонкий импл erasi - framework .
Здесь задачу можно по разному поставить. Когда что-то чужое (неизвестно что) нужно обфусцировать понятно, что сложно. Если своё, то никто не мешает код отдельно от данных распологать.
я наверно что-то недопонимаю. Обфускация - есть метод запутать реверсера, так? Чем реверсера запутает замена test eax,eax на or eax, eax? Это может прокатить только против сигнатурного анализа, автоматического...
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.: сам не пробовал.