Я прочитал несколько статей на эту тему, как этот и реализованы большинство описанных методик. Но я также хочу добавить дополнительный двоичный код, на который нет ссылок или который никогда не используется. В идеале я хочу иметь возможность добавить этот код во встроенный двоичный файл с помощью инструмента. Есть ли такой инструмент? Любые идеи о том, как построить такой инструмент? Или как сгенерировать и добавить в мою программу на C ++ какой-то неиспользуемый код? Где я должен положить это?
При анализе внутренних компонентов Skype я прочитал, что они как можно больше портят код. Одним из способов достижения этого является динамическое вычисление каждого вызова:
if ( sin(a) == 42 ) {
do_dummy_stuff () ;
}
Должен ли я войти в фиктивную функцию? Или фиктивная функция — это никогда не используемый код?
Обновление: причина, по которой я хочу добавить никогда неиспользуемый код в двоичный файл, заключается в том, что мы отправляем много электронных книг. Я хочу, чтобы двоичные файлы каждого были немного разными, поэтому, если один будет скомпрометирован, другие не будут (по крайней мере, не сразу).
Если я вас правильно понял, вы говорите о затемнение.
Этот вопрос на Stackoverflow охватывает тему. Существует много программ, которые запутывают код C ++, быстрое поиск в Google показывает много таких приложений, например, этот или же этот.
Есть ли такой инструмент?
Да, есть. Он называется компилятором с правильными параметрами, и для добавления к нему компоновщика. Добавить к этой комбинации полоса, и вы получите правильную библиотеку.
На серьезной ноте, нет способов предотвратить реверс-инжиниринг. Вы можете только сделать это тяжелее (или лучше раздражать) для взломщика. Вы можете посмотреть в Эта статья (где разработчики Spyro испробовали все виды защиты от пиратства)