Как я могу скрыть имена идентификаторов в скомпилированных проектах?

Когда я компилирую проект, содержащий код, например:

ttest = record
   one, two: string;
   three: integer;
end;

Я вижу в EXE-строках такие строки, как «ttest», «one», «two» и «three».

Это есть в любой версии Delphi, даже в Free Pascal.

Есть ли возможность не помещать это в скомпилированную программу? Без использования упаковщиков, шифровальщиков и тому подобного.


person user1269348    schedule 14.03.2012    source источник
comment
вы создаете версию выпуска, поскольку она больше похожа на отладочную версию, если только эти имена не являются постоянными значениями...   -  person Remko    schedule 14.03.2012


Ответы (4)


Не уверен, что это поможет, но проверьте создайте исполняемый файл delphi xe меньшего размера, кажется, что удаление RTTI может решить вашу проблему.

person Cyclonecode    schedule 14.03.2012

Попробуйте отключить любую отладочную информацию, которую вы можете найти в диалоговом окне «Параметры проекта» (пункт меню Проект/Параметры), затем перестройте весь проект (т. е. не просто Компилировать, используйте пункт меню Проект/Сборка, чтобы каждый модуль в проекте был перекомпилирован). Это должно исправить это.

Фактические параметры, которые необходимо отменить в параметрах проекта, зависят от вашей версии Delphi: для Delphi 2006/Turbo Delphi они включают все параметры в разделе Отладка на вкладке Компилятор (возможно, кроме "Утверждения") и на вкладке Компоновщик "Включить отладочную информацию TD32" / "Включить символы удаленной отладки". В более новых версиях Delphi есть функция «Конфигурация сборки», аналогичная Visual Studio, при выборе здесь «Выпуск» и перестроении должна быть удалена вся «контрольная» отладочная информация.

person rob74    schedule 14.03.2012
comment
Спасибо за ответ. Это не сработало, я просто отключил все в параметрах проекта, и он все еще существует в EXE. Пока я использую Delphi, я так и не нашел, как это удалить. Я могу перезаписать эти строки с помощью WinHex, и программа работает нормально - никаких сбоев или чего-то подобного, но проблема в том, что любой может прочитать мои структуры данных, что может помочь, например, взломать приложение. - person user1269348; 15.03.2012
comment
Вы уверены, что это именно для примера, который вы приводите? Опубликованные свойства всегда RTTIed!!!!! Так что вы видите некоторые имена полей, это нормально. Не публикуйте их, если вы этого не хотите (но VCL частично полагается на это). - person Marco van de Voort; 16.03.2012

Просто не помечайте свои данные как опубликованные, если это возможно, иначе имена полей будут видны. Кроме того, не забывайте, что каждый метод, созданный при нажатии на инспектор свойств, автоматически становится опубликованным (поскольку они также используются в файлах dfm). Таким образом, каждый 'Button1Click' и т. д. виден и, следовательно, легко локализуется (код метода).

Просто проверьте любую программу, скомпилированную с помощью Delphi в IDA бесплатно и с помощью специального «Скрипта Delphi string IDC (найдите его во дворце IDA)». В окне Имена вы легко увидите все TSsomething. , все опубликованные свойства TSomething и методы...

person az01    schedule 19.03.2012

Я решил проблему. Использование «строки» в записях приводит к тому, что имя записи отображается в исполняемом файле.

person user1269348    schedule 31.03.2012