Đối với Windows chứng nhận 8 ứng dụng, có (trong số khác) các yêu cầu:Enable Xử lý ngoại lệ an toàn trong C++ Builder
- 3,2 ứng dụng của bạn phải được biên dịch bằng cách sử dụng
/SafeSEH
cờ để đảm bảo trường hợp ngoại lệ an toàn xử lý - 3.3 ứng dụng của bạn phải được biên dịch bằng cách sử dụng
/NXCOMPAT
cờ để ngăn chặn thực thi dữ liệu - 3.4 ứng dụng của bạn phải được biên dịch bằng cách sử dụng
/DYNAMICBASE
cờ cho bố trí không gian địa chỉ ngẫu nhiên (ASLR)
Tôi không thể tìm hiểu cách bật một trong hai loại này trong C++ Builder XE.
Đối với /NXCOMPAT
và /DYNAMICBASE
, người ta có thể sử dụng editbin.exe
từ VS hoặc peflags.exe
từ Cygwin. Mặc dù tôi sẽ cảm thấy tự tin hơn về những tác dụng phụ có thể xảy ra, nếu có cách thức bản địa để kích hoạt chúng.
Dù sao, tôi hoàn toàn mất mát về số /SafeSEH
.
Chắc chắn Delphi XE2 không tạo ra tệp thực thi với [Bảng xử lý ngoại lệ an toàn] (http://www.jwsecure.com/2007/07/06/the-safe-exception-handler-table/). Tôi không có CPPBuilder để kiểm tra nhưng tôi không đặt cược. Tôi nghĩ bạn sẽ không may mắn và phải gửi yêu cầu QC. Nó thực sự có thể là các trình xử lý ngoại lệ có cấu trúc là an toàn nhưng điều đó không được sử dụng nhiều cho bạn nếu các tệp PE không được đánh dấu để nói như vậy. Ứng dụng 64 bit của bạn sẽ ổn, nhưng điều đó cũng không khả thi trong CPPBuilder. –
Báo cáo QC có liên quan: http://qc.embarcadero.com/wc/qcmain.aspx?d=106781 –