当前位置: 首页 > news >正文

如何在 User space 確保全數啟用 PIE CFLAG ?

文章目录

  • 什麼是 PIC/PIE FLAG
  • 如何在 User space 確保全數啟用 PIE CFLAG
    • 自有 soucr code 的情況下
      • common.mk 定義 apply_pie_flags 函數
      • 要求 application Makefile include common.mk
    • 第三方 Open Source 工具: buildroot 舉例

CheckSec 掃描 ELF,除了要求 Linux 開啟 ALSR ,各個 ELF (Binary/Library) 需要自行使用 PIC, PIE flag 編譯

什麼是 PIC/PIE FLAG

-fPIC 跟 -fPIE

項目-fPIC-fPIE
主要用途產生共享函式庫產生執行檔(主程式)
可重定位性任意位置載入供多程序共用任意位置載入,供單一程序使用
搭配連結選項-shared-pie
是否能替代彼此-fPIC 不可產生主程式-fPIE 不可產生共享函式庫

如何在 User space 確保全數啟用 PIE CFLAG

自有 soucr code 的情況下

實作必須符合下列要求:

  1. 根據使用者提供的參數,自動決定是否加上 -fPIE -pie
  2. 同時避免與不相容參數(例如 -static -r -shared)同時存在: 檢查是否已經存在 -fPIE 或 -fPIC,如果沒加過,就自動補上 -fPIE 和 -pie

common.mk 定義 apply_pie_flags 函數

define apply_pie_flagsifeq ($(CONFIG_APP_ENABLE_PIE),y)DISABLE_PIE_FLAGS := -static -fno-pie -fno-PIE -no-pie -r -Wl,-rFOUND_DISABLE_PIE := $(filter $(DISABLE_PIE_FLAGS), $(CFLAGS) $(LDFLAGS) $(CXXFLAGS))FOUND_PIC_FLAGS := $(filter -fPIE -fpie -fPIC -fpic, $(CFLAGS) $(CXXFLAGS))FOUND_SHARED := $(findstring -shared, $(LDFLAGS))ifeq ($(strip $(FOUND_DISABLE_PIE)),)ifneq ($(strip $(FOUND_SHARED)),)  # ── Shared Library# shared library: add -fPIC if not already setifeq ($(strip $(FOUND_PIC_FLAGS)),)CFLAGS   += -fPICCXXFLAGS += -fPICendifelse  # ── Binary# Remove -fPIC / -fpic(if have)CFLAGS   := $(filter-out -fPIC -fpic, $(CFLAGS))CXXFLAGS := $(filter-out -fPIC -fpic, $(CXXFLAGS))# Add -fPIEifeq ($(strip $(FOUND_PIC_FLAGS)),)CFLAGS   += -fPIECXXFLAGS += -fPIEendif# Add -pie to LDFLAGSLDFLAGS += -pieendifendifendif
endef

要求 application Makefile include common.mk

include $(APP_PATH)/common.mk

第三方 Open Source 工具: buildroot 舉例

透過 buildroot defconfig 啟用下列設定,確保所有來自 buildroot 的安裝檔都帶有 PIE CFLAG

BR2_PIC_PIE=y
http://www.dtcms.com/a/458199.html

相关文章:

  • 阿克苏交通建设局网站怎么把在EXCEL做的查询系统做到网站上
  • 深度学习基础:从原理到实践——附录A:PyTorch 深度学习框架基础(上)
  • 外贸网站谷歌seo营销网络搭建
  • 制作网站代码大全有专门做特产的网站吗
  • 深圳网站外包公司简介工业产品外观设计公司
  • 做电商网站都需要学什么软件wordpress搜索功能调用
  • wordpress网站采集插件建一家网站多少钱
  • 视觉手势识别发展历史
  • 单页网站seo网站开发是在电脑上打出来的资料么
  • 百色建设局网站有哪些网站做的好处
  • 全面详解 PyTorch 中的优化器
  • npm 扩展vite、element-plus
  • 好看的网站首页特效网页设计作品简单
  • dedecms织梦古典艺术书画书法公司企业网站源码模板网页设计茶叶网站建设
  • 网站文件名优化深圳龙华区地图
  • SystemVerilog的隐含随机约束
  • 类似站酷的网站建站网站在线考试答题系统怎么做
  • 网站备案号查询网互联网企业概念
  • [01] Qt的UI框架选择和对比
  • 吴恩达机器学习课程(PyTorch 适配)学习笔记:3.3 推荐系统全面解析
  • 劳动服务公司网站源码线上销售模式有哪些
  • 青岛北京网站建设公司哪家好个人在湖北建设厅网站申请强制注销
  • 微网站策划方案wordpress做app下载文件
  • 建设网站德州百度招聘官网首页
  • 基于GA-SVM的织物瑕疵种类识别算法matlab仿真,包含GUI界面
  • IT 疑难杂症诊疗室:破解数字世界的 “疑难杂症”
  • 做网站用笔记本做服务器吗驾校网站建设方案
  • 绍兴外贸网站建设嘉祥网站建设
  • 机器视觉Halcon3D中create_pose的作用
  • 个人博客建站wordpress网站建设岗位能力评估表