Когда я компилирую C++ двоичного с помощью GCC с возможностью хранить информацию о символах и при запуске следующей команды он перечисляет TypeInfo для классовИспользует ли полоса для удаления данных RTTI в двоичном формате?
objdump -Ct ExecName | grep typeinfo
Когда я компилирую с зачищенной опцией -s и выполнить следующую команду в нем нет символов.
Но я беспокоюсь, что информация RTTI хранится в каком-то другом месте.
Я бы предпочел, чтобы все имена классов не отображались в двоичном формате. Я хотел бы подтвердить, действительно ли десорбирующие символы заканчивают удаление информации RTTI.
В этой презентации на Blackhat они показывают, как использовать RTTI, чтобы узнать о двоичном коде. http://www.blackhat.com/presentations/bh-dc-07/Sabanal_Yason/Paper/bh-dc-07-Sabanal_Yason-WP.pdf
Я знаю, что вы можете отключить RTTI, используя -fno-rtti при компиляции, но я хочу, чтобы это было последним.
nope (padding padding padding) – sehe
Вы можете проверить с помощью утилиты командной строки 'strings', будет ли ваш двоичный код содержать ваши имена классов в текстовом формате ... – arne
@ pt123 Документ, на который вы ссылаетесь, рассказывает о MSVC. g ++ может свободно применять RTTI по-разному. Описание MSVC включает имена классов, метод g ++ может и не быть. Вам нужно узнать, как g ++ делает RTTI. –