Delphi: Препятствуйте тому, чтобы имена методов появились в исполняемых файлах

Я пишу класс для обработки безопасности в моем исполняемом файле (проверка сериалов, проверка даты судебного разбирательства и т.д.). После того, как я компилирую исполняемый файл (даже в Сборке конечных версий, со всей отладкой и выключенным поколением RTTI), когда я открываю его в NotePad и ищу имя метода в необработанных данных, я вижу все названия методов, которые собирают мой класс. Нет никаких опубликованных участников ни в каком классе в кодовой базе.

Это плохо для защиты. Там какой-либо путь состоит в том, чтобы сказать Delphi не хранить имена методов в исполняемом файле? Почему это хранит их вообще, если нет никакого необходимого RTTI и никакого взрыва COM? Там какой-либо параметр компилятора управляет этим?

Может случиться так, что ЛЮБОЙ метод ЛЮБОГО класса в целевом исполняемом файле хранится в исполняемом файле в текстовой форме. По-видимому, это вызывается расширенным RTTI, включаемым по умолчанию для всех классов в Delphi 2010.

14
задан jordanhill123 20 August 2015 в 01:59
поделиться

4 ответа

Если вы спрашиваете о расширенной RTTI в Delphi 2010, то ее можно отключить функцией

{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

см. также docwiki.

15
ответ дан 1 December 2019 в 10:18
поделиться

Также положите переоснащение, занимая следующее в файле DPR проекта:

{$IFDEF RELEASE}
  // Leave out Relocation Table in Release version
  {$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}
{$ENDIF RELEASE}
6
ответ дан 1 December 2019 в 10:18
поделиться

Вероятно, вы увидите определение вашей формы как ресурса (например, двоичное представление DFM-файлов вашего проекта).

Если вы не хотите их показывать (для серийного информационного экрана и т.д.), вы должны создать эти формы "в коде". Eg создайте TForm, поместите на него TButton и TEdit, прикрепите обработчики событий в коде.

Чтобы сделать это удобным способом: начните с формы и создайте DFM. При соперничестве с формой выберите View as text (Вид как текст) из контекстного меню, и вы будете знать, какие вещи нужно скопировать в код. И убедитесь, что НЕ помещаете никакие вариабельные ссылки под de published (всегда помещайте public/protected/private в качестве первой строки в определении вашего класса.

-1
ответ дан 1 December 2019 в 10:18
поделиться

... и не забудьте отключить "td 32 debug info" (в более старых версиях) или информацию об отладке на вкладке компоновщика в более поздних версиях .

6
ответ дан 1 December 2019 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: