Clang CFI 展示项目教程

Clang CFI 展示项目教程

clang-cfi-showcaseSample programs that illustrate how to use control flow integrity with the clang compiler项目地址:https://gitcode.com/gh_mirrors/cl/clang-cfi-showcase

1. 项目的目录结构及介绍

clang-cfi-showcase/
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── cfi_cast_strict.cpp
├── cfi_derived_cast.cpp
├── cfi_icall.c
├── cfi_nvcall.cpp
├── cfi_unrelated_cast.cpp
└── cfi_vcall.cpp
  • .gitignore: 用于指定Git版本控制系统忽略的文件和目录。
  • LICENSE: 项目的许可证文件,采用NCSA许可证。
  • Makefile: 用于编译项目的Makefile文件。
  • README.md: 项目的主要说明文档。
  • cfi_cast_strict.cpp: 展示Clang如何防止特定情况下的非法类型转换。
  • cfi_derived_cast.cpp: 展示Clang如何防止从基类对象到派生类对象的非法类型转换。
  • cfi_icall.c: 展示Clang如何防止间接函数调用中的非法调用。
  • cfi_nvcall.cpp: 展示Clang如何防止非虚拟函数调用中的非法调用。
  • cfi_unrelated_cast.cpp: 展示Clang如何防止无关类型之间的非法类型转换。
  • cfi_vcall.cpp: 展示Clang如何防止虚拟函数调用中的非法调用。

2. 项目的启动文件介绍

项目的启动文件主要是Makefile。Makefile包含了编译和运行项目所需的所有指令。通过运行make命令,可以编译所有示例程序。

3. 项目的配置文件介绍

项目的配置文件主要是Makefile。Makefile中定义了编译选项、链接选项以及依赖关系。以下是Makefile的部分内容:

# 编译器和链接器
CC = clang
CXX = clang++
LD = ld.gold

# 编译选项
CFLAGS = -flto -fvisibility=hidden -fno-sanitize=all
CXXFLAGS = -flto -fvisibility=hidden -fno-sanitize=all

# 链接选项
LDFLAGS = -flto -fuse-ld=$(LD)

# 目标文件
TARGETS = cfi_cast_strict cfi_derived_cast cfi_icall cfi_nvcall cfi_unrelated_cast cfi_vcall

all: $(TARGETS)

# 编译规则
%: %.c
	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

%: %.cpp
	$(CXX) $(CXXFLAGS) $< -o $@ $(LDFLAGS)

clean:
	rm -f $(TARGETS)

Makefile中定义了编译器(clang和clang++)、链接器(ld.gold)、编译选项(CFLAGS和CXXFLAGS)以及链接选项(LDFLAGS)。通过这些配置,可以确保项目在不同的环境中正确编译和运行。

clang-cfi-showcaseSample programs that illustrate how to use control flow integrity with the clang compiler项目地址:https://gitcode.com/gh_mirrors/cl/clang-cfi-showcase

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗念耘Warlike

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值