发明名称 |
用于检测调用堆栈篡改的系统 |
摘要 |
本发明涉及一种用于检测子例程调用堆栈修改的方法,包括以下步骤:当调用子例程时,将返回地址放置在堆栈的顶部;在子例程结束时,使用堆栈顶部的地址作为返回地址,并从堆栈中移除该地址;当调用子例程时,利用第一运算(OP)将返回地址积累在存储单元(REG)中;在子例程结束时,利用与第一运算相反的第二运算将来自堆栈顶部的地址积累在存储单元中;以及当存储单元的内容与其初始值(REG<sub>0</sub>)不同时检测到变更。 |
申请公布号 |
CN104520868A |
申请公布日期 |
2015.04.15 |
申请号 |
CN201380041553.5 |
申请日期 |
2013.07.31 |
申请人 |
英赛瑟库尔公司 |
发明人 |
F·加尔多 |
分类号 |
G06F21/52(2006.01)I;G06F21/71(2006.01)I;G06F11/28(2006.01)I |
主分类号 |
G06F21/52(2006.01)I |
代理机构 |
北京市中咨律师事务所 11247 |
代理人 |
杨晓光;于静 |
主权项 |
一种用于检测子例程调用堆栈修改的方法,对于在初始子例程中嵌套的子例程序列中的每个子例程,所述方法包括以下步骤:●当调用当前子例程时,将返回地址放置在所述堆栈的顶部;●在所述当前子例程结束时,使用位于所述堆栈顶部的地址作为返回地址,并从所述堆栈中移除所述地址;●将单个存储单元(REG)分配给所述子例程序列;●在调用所述初始子例程之前,保存所述存储单元的初始值(REG<sub>0</sub>);●当调用所述当前子例程时,利用第一运算(OP)将所述返回地址积累在所述存储单元(REG)中;●在所述当前子例程结束时,利用与所述第一运算相反的第二运算将来自所述堆栈顶部的所述地址积累在所述存储单元中;以及●在从所述初始子例程返回时,当所述存储单元的内容与所述初始值(REG<sub>0</sub>)不同时检测到修改。 |
地址 |
法国梅吕埃 |