发明名称 |
用于多线程后向控制流完整性保护的影子栈实现方法 |
摘要 |
本发明提供了一种用于多线程后向控制流完整性保护的影子栈实现方法。所述用于多线程后向控制流完整性保护的影子栈实现方法包括如下步骤:a、对待保护程序的源码进行编译时插装,生成部署了影子栈的可执行文件;b、启动部署了影子栈的可执行文件,由动态共享库劫持线程的创建和启动,完成创建影子栈;c、插装后的函数头和函数尾实现所述影子栈的栈顶指针的维护和后向控制流完整性的检查;d、进行所述线程的退出处理,并通过所述动态共享库中注册的析构函数对所述影子栈进行销毁。本发明的有益效果在于:所述用于多线程后向控制流完整性保护的影子栈实现方法可提高多线程C/C++程序的控制流完整性保护能力,以降低受到代码复用攻击的威胁。 |
申请公布号 |
CN106295258A |
申请公布日期 |
2017.01.04 |
申请号 |
CN201610638311.X |
申请日期 |
2016.08.04 |
申请人 |
南京大学 |
发明人 |
曾庆凯;谢志宇 |
分类号 |
G06F21/12(2013.01)I;G06F21/56(2013.01)I |
主分类号 |
G06F21/12(2013.01)I |
代理机构 |
南京钟山专利代理有限公司 32252 |
代理人 |
戴朝荣 |
主权项 |
一种用于多线程后向控制流完整性保护的影子栈实现方法,其特征在于:包括如下步骤:a、对待保护程序的源码进行编译时插装,生成部署了影子栈的可执行文件;b、启动部署了影子栈的可执行文件,由动态共享库劫持线程的创建和启动,完成创建影子栈;c、插装后的函数头和函数尾实现所述影子栈的栈顶指针的维护和后向控制流完整性的检查;d、进行所述线程的退出处理,通过所述动态共享库中注册的析构函数对所述影子栈进行销毁。 |
地址 |
210000 江苏省南京市汉口路22号 |