Для сертификации 8 приложений Windows, есть (среди прочих) эти требования:Включить безопасный Обработка исключений в C++ Builder
- 3,2 Ваше приложение должно быть скомпилированы с использованием
/SafeSEH
флага для обеспечения безопасной обработки исключений - 3,3 Ваше приложение должно быть скомпилировано с помощью
/NXCOMPAT
флага для предотвращения выполнения данных - 3,4 Вашего приложение должно быть скомпилировано с помощью
/DYNAMICBASE
флага для адресного пространства рандомизации (ASLR)
Мне не удалось выяснить, как включить любой из них в C++ Builder XE.
Для /NXCOMPAT
и /DYNAMICBASE
, можно использовать editbin.exe
из VS или peflags.exe
от Cygwin. Хотя я бы чувствовал себя более уверенно в возможных побочных эффектах, если бы был естественный способ их включения.
В любом случае, я полностью потерял /SafeSEH
.
Конечно, Delphi XE2 не создает исполняемые файлы с помощью [Таблицы обработчика безопасного исключения] (http://www.jwsecure.com/2007/07/06/the-safe-exception-handler-table/). У меня нет CPPBuilder, чтобы проверить это, но я бы сделал ставку не на то. Я думаю, вам будет не повезло, и вы должны отправить запрос QC. На самом деле может быть, что структурированные обработчики исключений безопасны, но для вас это не очень удобно, если файлы PE не отмечены так, чтобы это можно было сказать. Ваши 64-разрядные приложения будут в порядке, но это также невозможно в CPPBuilder. –
Соответствующий отчет QC: http://qc.embarcadero.com/wc/qcmain.aspx?d=106781 –