2016-07-25 11 views
5

Jak włączyć ochronę przed rozbiciem stosu w czystej, szybkiej aplikacji?Zabezpieczenie przed rozbiciem Swift i Stack

Próbowałem umieścić flagę "-fstack-protector-all" na innych flagach C++ pod zakładką ustawień projektu w kodzie xCode, ale wygląda na to, że ta flaga jest nieużywana lub nie ma wpływu na zbudowaną aplikację.

Do sprawdzania kompilacji używam otool -Iv AppBinary | grep stack.

+0

Czy masz odpowiedź na to pytanie? – nkp

+0

Nie. Nie mam. Aby spełnić wymagania klienta dodałem UIView jako klasę Objective-C. Stworzyło to nagłówki parasola do celu-c, a projekt został skompilowany jako mieszany projekt Swift-Obj-c (nie jako czysty, szybki projekt). Ten widok nie był używany żadnych towarów ... Po prostu było. –

+0

Dziękujemy za wpis ... – nkp

Odpowiedz

3

W Swift, rozbrajanie stosów jest domyślnie włączone, wystarczy dodać flagę "-fstack-protector-all" w ustawieniach kompilacji w aplikacjach typu "c".

Sposób sprawdzania, czy rozbijanie stosów jest włączone. Uruchom komendę otool, a obecność stack_chk_guard i stack_chk_fail oznacza, że ​​kod jest chroniony przed rozbiciem stosu.

$ otool -Iv <appname>|grep stack 
0x0013dfg 520 ___stack_chk_fail 
0x001d009 521 ___stack_chk_guard 
0x001fd345 520 ___stack_chk_fail 
0x000000010087efd 513 ___stack_chk_fail 
0x0000000100098hf3 514 ___stack_chk_guard 
0x00000001000897gfr 513 ___stack_chk_fail