1

Посмотреть содержимое GrdFWBO.obj в профайлере

Работаю в Embarcadero C++Builder 2010. Статически подключаю файл GrdFWBO.obj из директории .../Lib. Когда открываешь скомпилированную программу в профайлере, то в списке отображаются все obj-файлы, из которых собиралось программа, файла же GrdFWBO.obj не видно. Это нормально? Нужно ли что-либо защищать в файле GrdFWBO.obj?

2 (2013-02-21 17:54:48 отредактировано Mikhail Bakalyarov)

Re: Посмотреть содержимое GrdFWBO.obj в профайлере

Да, это нормально, т.к. функции внутри объектного файла уже защищены от реверсирования с помощью псевдокода. Выбирая свои функции, вы тем самым усиливаете автозащиту, позволяя встраивать проверки ключа в ветки вашего приложения. Возможности автозащиты на этом ограничиваются.

Далее, рекомендуется использовать Guardant Armor. В этом случае движок на сервере распознает наш объектный файл в вашем приложении, и преобразует его вместе с кодом приложения в псевдокод. Псевдокод шифруется на электронном ключе, и будет расшифровываться блоками по мере выполнения, при этом в памяти никогда не будет всех блоков сразу (защита от дампа). Плюс нельзя будет поставить точки останова на API внутри приложения, и т.д. Т.е. полноценная защита с помощью виртуальной машины с привязкой к ключу. Является самым стойким автоматическим средством на текущий момент.

3

Re: Посмотреть содержимое GrdFWBO.obj в профайлере

На сколько Guardant Armor будет снижать производительность программы по сравнению с обычной автозащитой?

4

Re: Посмотреть содержимое GrdFWBO.obj в профайлере

В процессе защиты Guardant Armor оперирует базовыми блоками. Базовый блок состоит из одной или нескольких ассемблерных инструкций заканчивающихся командой перехода.

Сама по себе защита базового блока примерно в 800 раз замедляет его выполнение. Но это замедление может быть нивелировано, если правильно подобрана частота вызова защищённых  блоков в единицу времени работы приложения.

Что касается замедлений автозащиты, то первое замедление происходит при старте защищённого приложения в момент расшифровки в памяти и далее в моменты вызовов защищённых импортов и RIP-кода. Сам по себе вызов защищённого импорта или RIP-кода занимает фиксированное время. Тем не менее, слишком частые вызовы также могут привести к резкому замедлению.