0

我想在 Clang/llvm 中实现控制流完整性。(我知道已经实施了 Forward-Edge CFI)

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

有谁知道从哪里开始,或者是否可以使用插件系统(LibClang、Clang Plugins、LibTooling)?

提前致谢

4

1 回答 1

0

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

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

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

于 2016-12-07T19:47:25.797 回答