Есть ли простой/повторяемый способ скремблирования RTTI-символов?Как скрыть символы RTTI C++?
Некоторые вещи, которые уже были сделаны:
статические сборки - Очевидно, что это очень помогает, как вещи получить встраиваются между библиотеками и нет никакого чистый интерфейс, как с динамической библиотеки. Мы хотим сделать это в любом случае. B/c библиотека работает с кросс-платформой, и это упрощает развертывание (только один файл с полной библиотекой).
с использованием «полосы» - по крайней мере, на Linux (не уверен, является эквивалентом для Windows!), это приведет к удалению хорошей часть символов слева плавающей вокруг
Однако, если я бег «струна» на библиотеке я до сих пор можно увидеть читаемые символы человека! После некоторых исследований кажется, что это связано с RTTI. Все существующие компиляторы, похоже, просто используют функцию/класс/и т. Д. для генерации значений сравнения RTTI в коде. Этот эффект приводит к утечке источника в двоичный файл и дает любопытную информацию о нашем секретном соусе и о том, как мы это делаем.
Примечание:
Мы не можем строить с -fno-RTTI б/с статически связанных библиотек мы используем, используя RTTI внутри. Я думаю, что то, что я ищу, это то, что будет работать на скомпилированном исполняемом файле, а не как часть процесса сборки.
Я попытался найти коммерческий продукт, который это сделает, но ни один из них не отображает его в их списке функций. Многие продукты, похоже, имеют сомнительное качество или находятся в каком-то полузаброшенном состоянии. Большинство из них, похоже, сосредоточено на скремблировании кода и выполнении всех видов сложных преобразований, которые ухудшают производительность и не являются для нас чрезвычайно важными.
вручную скремблировании всех символов во всех библиотеках, которые мы используем будет делать трюк .. но мне кажется, как ремонтопригодность кошмар ...
Спасибо за предложения. Выполнение этого в автоматическом режиме для всех оставшихся символов кажется немного сложной задачей. Может быть, у кого-то будет более легкое решение :) – geokon