Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

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

Отредактировано

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

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

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

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

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

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

GCC

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

M/o/Vfuscator

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

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

GCC

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

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.

Следите за новыми постами
Следите за новыми постами по любимым темам
5К открытий5К показов