Поддерживает ли Android NDK флаг "-z execstack"? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь собрать исполняемый файл с android ndk для проверки шеллкода. Я установил 'LOCAL_CFLAGS: = -z execstack', чтобы сделать стек исполняемым, но он не работает. Разве Android ndk не поддерживает опцию -z execstack?

Вот код:

18 включают $ (CLEAR_VARS)
19 LOCAL_MODULE: = тест шеллкода
20 LOCAL_SRC_FILES: = src / shellcode-test.c
21 LOCAL_CFLAGS: = -z execstack -Wl, - execstack

Результат проверки: только 'RW', нет 'E'

$ aarch64-linux-gnu-readelf -l shellcode-test ... GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 RW 0x10 ...

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

Решено.

Android NDK вынуждает опции noexecstack при сборке исполняемых файлов или библиотек. Так что -z execstack в моем Android.mk переопределяется параметром NDK по умолчанию:

./build/core/build-binary.mk:LOCAL_CFLAGS += -Wa,--noexecstack ./build/core/build-binary.mk:LOCAL_LDFLAGS += -Wl,-z,noexecstack

0 голосов
/ 11 июля 2019

Даже если ваш код компилируется с исполняемым стеком, платформа не загрузит его как исполняемый.Исполняемые стеки представляют собой большую угрозу безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...