Компилятор Си в одну инструкцию: обзор инструмента M/o/Vfuscator

M/o/Vfuscator компилирует программы в инструкции mov, и только в них. Инструмент ориентирован на язык Си и архитектуру процессора x86, но адаптивен и легко настраивается под другие языки и архитектуры.

Демонстрация

Компиляция функции, вычисляющей простые числа, с помощью M/o/Vfuscator в сравнении с GCC:

Язык Ассемблера

GCC

M/o/Vfuscator

Граф потока управления

GCC

M/o/Vfuscator

M/o/Vfuscator в действии

movcc prime.c -o prime

Пример поинтереснее

movcc nibbles.c -o nibbles -lncurses

Сборка

M/o/Vfuscator использует LCC в качестве препроцессора. Предлагаемый скрипт сборки автоматически загружает LCC, настраивает его конфигурацию для MOV и собирает M/o/Vfuscator.

Если вы проводите сборку на 64-битной системе, убедитесь, что у вас есть доступ к 32-битной стандартной библиотеке (например, apt-get install libc6-dev-i386 или yum install glibc-devel.i686).

git clone https://github.com/xoreaxeaxeax/movfuscator
cd movfuscator
./build.sh
sudo ./install.sh

Тестирование

Проверьте, что сборка произошла корректно, с помощью следующего скрипта:

./check.sh

Использование

Компилируйте программы как обычно.

movcc example.c -o example

Всю остальную необходимую информацию можно найти в репозитории проекта на GitHub.

Источник: GitHub