Я создаю свой код C с помощью компилятора Clang 8 и пытаюсь использовать флаг -fstack-protector
для включения канареечных защит стека.
Насколько я понимаю, с этим флагом код компилируется в используйте канареечное значение из местоположения по умолчанию [FS:0x28]
. Однако я не хочу использовать это место для канарейки стека, и я хочу, чтобы он был размещен где-то еще в моем двоичном файле или в другом месте. Я просто не могу использовать [FS:0x28]
, потому что это пространство памяти используется для чего-то еще в среде, в которой будет работать двоичный файл приложения.
Мне удалось заменить функцию __stack_chk_fail
по умолчанию моей собственной, но как определить в моем исходном коде пользовательское местоположение для канареечного значения стека?