Как использовать канарейку со стеком, отличную от той, что находится в [FS: 0x28]? - PullRequest
0 голосов
/ 13 июля 2020

Я создаю свой код C с помощью компилятора Clang 8 и пытаюсь использовать флаг -fstack-protector для включения канареечных защит стека.

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

Мне удалось заменить функцию __stack_chk_fail по умолчанию моей собственной, но как определить в моем исходном коде пользовательское местоположение для канареечного значения стека?

...