在clang / llvm中实现CFI的入口点?

时间:2016-08-17 12:52:02

标签: security compiler-construction llvm-clang control-flow memory-safety

我想在Clang / llvm中实现Control-Flow Integrity。 (我知道已经实施了前沿CFI)

我的问题是,我从来没有为编译器实现任何东西(我是基于编译器的方法的新手),因此不知道从哪里开始。 对于我的实现,我首先需要获得所有调用的列表(internal =>没有库调用),然后更改函数的结束方式(例如:pop + jmp而不是ret)。

有没有人知道从哪里开始,或者即使可以使用插件系统(LibClang,Clang插件,LibTooling)?

提前致谢

1 个答案:

答案 0 :(得分:0)

这是一个高级的CCFI: https://bitbucket.org/CCFI/

基于此: http://iot.stanford.edu/pubs/mashtizadeh-ccfi-ccs15.pdf

您可以了解如何将代码添加到每个jmp,call,jmp,ret等等......