1.一种用于在处理器中强制执行软件程序的流控制的方法,所述方法包括:
分析所述软件程序的程序代码以识别所述程序代码中的代码指针;
基于所述代码指针产生验证标记;以及
用所述验证标记来修改所述程序代码中的所述代码指针,以产生带标记的代码指针。
2.根据权利要求1所述的方法,其中用所述验证标记来修改所述程序代码中的所述代码指针以产生所述带标记的代码指针进一步包括:
通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针。
3.根据权利要求2所述的方法,其中通过将所述掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针进一步包括:
使用所述掩码从所述验证标记选择第一位集合;以及
用所述第一位集合来代替所述代码指针的对应于所述第一位集合的第二位集合,以产生所述带标记的代码指针。
4.根据权利要求2所述的方法,其进一步包括:
识别所述程序代码中的多个代码指针;以及
识别所述程序代码中的所述多个代码指针共用的标记位以确定所述掩码。
5.根据权利要求1所述的方法,其进一步包括:
验证所述带标记的代码指针;
响应于所述验证标记已经更改而执行错误处置;以及
响应于所述验证标记尚未更改而执行与所述代码指针相关联的所述地址处的程序指令。
6.根据权利要求5所述的方法,其中验证所述带标记的代码指针包括:
使用掩码从所述带标记的代码指针确定经恢复的代码指针值。
7.根据权利要求6所述的方法,其进一步包括:
使用所述掩码从所述带标记的代码指针提取嵌入的验证标记值。
8.根据权利要求7所述的方法,其进一步包括:
至少部分地基于所述经恢复的代码指针值和上下文值来产生经恢复的验证标记。
9.根据权利要求8所述的方法,其进一步包括:
使用所述掩码从所述经恢复的验证标记提取带掩码的标记值。
10.根据权利要求9所述的方法,其进一步包括:
将所述带掩码的标记值与所述嵌入的验证标记值进行比较,以确定所述带标记的代码指针是否已更改。
11.一种用于在处理器中强制执行软件程序的流控制的设备,所述设备包括:
用于分析所述软件程序的程序代码以识别所述程序代码中的代码指针的装置;
用于基于所述代码指针产生验证标记的装置;以及
用于用所述验证标记来修改所述程序代码中的所述代码指针以产生带标记的代码指针的装置。
12.根据权利要求11所述的设备,其中所述用于用所述验证标记来修改所述程序代码中的所述代码指针以产生所述带标记的代码指针的装置进一步包括:
用于通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的装置。
13.根据权利要求12所述的设备,其中所述用于通过将所述掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的装置进一步包括:
用于使用所述掩码从所述验证标记选择第一位集合的装置;以及
用于用所述第一位集合来代替所述代码指针的对应于所述第一位集合的第二位集合以产生所述带标记的代码指针的装置。
14.根据权利要求12所述的设备,其进一步包括:
用于识别所述程序代码中的多个代码指针的装置;以及
用于识别所述程序代码中的所述多个代码指针共用的标记位以确定所述掩码的装置。
15.根据权利要求11所述的设备,其进一步包括:
用于验证所述带标记的代码指针的装置;
用于响应于所述验证标记已经更改而执行错误处置的装置;以及
用于响应于所述验证标记尚未更改而执行与所述代码指针相关联的所述地址处的程序指令的装置。
16.根据权利要求15所述的设备,其中验证所述带标记的代码指针包括:
用于使用掩码从所述带标记的代码指针确定经恢复的代码指针值的装置。
17.一种用于在处理器中强制执行软件程序的流控制的设备,所述设备包括:
处理器,其经配置以:
分析所述软件程序的程序代码以识别所述程序代码中的代码指针;
基于所述代码指针产生验证标记;以及
用所述验证标记来修改所述程序代码中的所述代码指针,以产生带标记的代码指针。
18.根据权利要求17所述的设备,其中经配置以用所述验证标记来修改所述程序代码中的所述代码指针以产生所述带标记的代码指针的所述处理器进一步经配置以:
通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针。
19.根据权利要求18所述的设备,其中经配置以通过将所述掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的所述处理器进一步经配置以:
使用所述掩码从所述验证标记选择第一位集合;以及
用所述第一位集合来代替所述代码指针的对应于所述第一位集合的第二位集合,以产生所述带标记的代码指针。
20.根据权利要求18所述的设备,其中所述处理器进一步经配置以:
识别所述程序代码中的多个代码指针;以及
识别所述程序代码中的所述多个代码指针共用的标记位以确定所述掩码。
21.根据权利要求17所述的设备,其中所述处理器经进一步配置以:
验证所述带标记的代码指针;
响应于所述验证标记已经更改而执行错误处置;以及
响应于所述验证标记尚未更改而执行与所述代码指针相关联的所述地址处的程序指令。
22.根据权利要求21所述的设备,其中经配置以验证所述带标记的代码指针的所述处理器进一步经配置以:
使用掩码从所述带标记的代码指针确定经恢复的代码指针值。
23.根据权利要求22所述的设备,其中所述处理器经进一步配置以:
使用所述掩码从所述带标记的代码指针提取嵌入的验证标记值。
24.一种非暂时性计算机可读媒体,其上存储有用于在处理器中强制执行软件程序的流控制的计算机可读指令,包括经配置以致使计算机进行以下操作的指令:
分析所述软件程序的程序代码以识别所述程序代码中的代码指针;
基于所述代码指针产生验证标记;以及
用所述验证标记来修改所述程序代码中的所述代码指针,以产生带标记的代码指针。
25.根据权利要求24所述的非暂时性计算机可读媒体,其中经配置以致使所述计算机用所述验证标记来修改所述程序代码中的所述代码指针以产生所述带标记的代码指针的所述指令进一步包括经配置以致使所述计算机进行以下操作的指令:
通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针。
26.根据权利要求25所述的非暂时性计算机可读媒体,其中经配置以致使所述计算机通过将所述掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的所述指令进一步包括经配置以致使所述计算机进行以下操作的指令:
使用所述掩码从所述验证标记选择第一位集合;以及
用所述第一位集合来代替所述代码指针的对应于所述第一位集合的第二位集合,以产生所述带标记的代码指针。
27.根据权利要求25所述的非暂时性计算机可读媒体,其进一步包括经配置以致使所述计算机进行以下操作的指令:
识别所述程序代码中的多个代码指针;以及
识别所述程序代码中的所述多个代码指针共用的标记位以确定所述掩码。
28.根据权利要求24所述的非暂时性计算机可读媒体,其进一步包括经配置以致使所述计算机进行以下操作的指令:
验证所述带标记的代码指针;
响应于所述验证标记已经更改而执行错误处置;以及
响应于所述验证标记尚未更改而执行与所述代码指针相关联的所述地址处的程序指令。
29.根据权利要求28所述的非暂时性计算机可读媒体,其中经配置以致使所述计算机验证所述带标记的代码指针的所述指令进一步包括经配置以致使所述计算机进行以下操作的指令:
使用掩码从所述带标记的代码指针确定经恢复的代码指针值。
30.根据权利要求29所述的非暂时性计算机可读媒体,其进一步包括经配置以致使所述计算机进行以下操作的指令:
使用所述掩码从所述带标记的代码指针提取嵌入的验证标记值。