Компилятор 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, ну, в любом случае, борьба с аппаратом (и набором корней) в любом случае.