【问题标题】:Does Android NDK support "-z execstack" flag?Android NDK 是否支持“-z execstack”标志?
【发布时间】:2019-07-11 12:31:37
【问题描述】:

我正在尝试使用 android ndk 构建一个可执行文件来测试 shellcode。我设置了 'LOCAL_CFLAGS := -z execstack' 以使堆栈可执行,但它不起作用。 android ndk 不支持 '-z execstack' 选项吗?

代码如下:

18 包括 $(CLEAR_VARS)
19 LOCAL_MODULE := shellcode-test
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 读写 0x10 ...

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    即使您使用可执行堆栈编译代码,平台也不会将其加载为可执行文件。可执行堆栈存在很大的安全风险。

    【讨论】:

      【解决方案2】:

      已解决。

      Android NDK 在构建可执行文件或库时强制使用 noexecstack 选项。所以我的 Android.mk 中的“-z execstack”被 NDK 的默认选项覆盖:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 2012-05-24
        • 1970-01-01
        相关资源
        最近更新 更多