Компилятор C / C ++, генерирующий запутанный код - PullRequest
18 голосов
/ 06 ноября 2010

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

Ответы [ 4 ]

3 голосов
/ 21 декабря 2010

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

3 голосов
/ 06 ноября 2010

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

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

1 голос
/ 01 января 2011

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

0 голосов
/ 06 ноября 2010

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

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

...