Компилятор C/С++, генерирующий запущенный код

Есть ли какой-либо известный компилятор C/С++, генерирующий обфускацию/noised-код? Или, может быть, любой патч для компилятора с открытым исходным кодом C/С++, например GCC?

Ответы

Ответ 1

Если вы заинтересованы в коммерческих инструментах, вы можете посмотреть на Morpher (отказ от ответственности: я работаю над этим проектом). По сути, это версия llvm-gcc с дополнительными проходами обфускации - вы должны использовать Morpher в качестве замены для gcc. Проходы обфускации включают постоянную защиту, клонирование основных блоков и функций, зацепление арок CFG и другие; они описаны в разделе документации с примерами сборки. Официально поддерживаемыми языками являются C/C++/Objective-C/Objective- C++, хотя мы можем адаптировать его для всего, что может быть скомпилировано для IR LLVM по вашему запросу.

Изменить 2019: эта компания вышла из бизнеса.

Ответ 2

Вы можете обфускать ассемблер с помощью http://www.pelock.com/products/obfuscator. Вероятно, вы можете скомпилировать ассемблер (в данном случае стиль MASM) и затем обфускать его.

Изменить: Используя многие виртуальные функции/косвенное и/или интерпретатор (т.е. создайте собственный мини-байт-код для определенных шагов обработки) как часть ваших результатов кода, по моему опыту, в совершенно невосстанавливаемый код.

Ответ 3

Любой компилятор, способный генерировать псевдослучайные числа (через __COUNTER__) и может вводить байты в поток встроенных сборок (через __emit), может выполнять обфускацию встроенного кода, его ничего не значит, что внешние упаковщики и обфускаторы do, что может быть выгодным. "Сила" в основном опирается на то, сколько метапрограммирования вы вкладываете в нее, но, очевидно, вы никогда не сможете сказать, что шифруют IAT и т.д.

Ответ 4

Другим подходом может быть запуск исполняемого файла внутри защищенной среды VM. ZProtect - продукт, который я не использовал и не одобряю, но скорее нашел с "Я чувствую удачу Google" - утверждает, что предоставляет несколько уровней защиты кода (VM, шифрование, обфускация и т.д.).

Если кто-то действительно, действительно хочет знать, как вы что-то сделали, они узнают - если это кража IP, тогда нанять хорошего адвоката. Если это крипто, то используйте проверенный отраслевой подход. И если это что-то DRM, ну, в любом случае, борьба с аппаратом (и набором корней) в любом случае.