[发明专利]用于使用返回导向编程的代码混淆的方法有效
申请号: | 201680009011.3 | 申请日: | 2016-02-02 |
公开(公告)号: | CN107209815B | 公开(公告)日: | 2020-08-14 |
发明(设计)人: | 高德斌 | 申请(专利权)人: | 华为国际有限公司;新加坡管理大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F21/54 |
代理公司: | 北京龙双利达知识产权代理有限公司 11329 | 代理人: | 魏雪娇;毛威 |
地址: | 新加坡市15A*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 使用 返回 导向 编程 代码 混淆 方法 | ||
本发明的实施例涉及将返回导向编程(Return Oriented Programming,ROP)用于非恶意目的,即用于代码混淆以提高安全性。可以通过创建实行原始(未被混淆)代码的指定功能的ROP代码并且构造能经过加载以执行所述ROP代码的ROP有效负载来隐藏与敏感性质的所述指定功能相关联的程序代码。可以用与所述指定功能不相关的杂散代码替代所述原始代码,并且提供控制流指令来加载所述ROP有效负载以执行所述ROP代码。
技术领域
本发明的实施例涉及代码保护,并且更具体地说,应用返回导向编程(ReturnOriented Programming,ROP)以混淆代码并且用于非恶意目的。
背景技术
混淆是保护算法和代码免于公开的重要技术。应用开发人员经常使用此技术来保护程序中至关重要的算法,使得程序的源代码和机器代码难以理解。
一种现有的混淆技术包括增加拆分程序代码的难度,使得程序代码的仅一小部分会被拆分。另一种现有的混淆技术包括对所选指令应用加密,使得已加密指令仅可用密钥公开。
然而,这些现有的混淆技术会造成限制。使用第一技术,代码分析仪将意识到程序代码的仅一小部分被拆分。使用第二技术,人们会质疑程序分析并且在加解密处理期间引起关注。
发明内容
本发明的实施例涉及将返回导向编程(Return Oriented Programming,ROP)用于非恶意目的,即,用于代码混淆以提高安全性。可以通过创建实行原始(未被混淆)代码的指定功能的ROP代码并且构造能经过加载以执行所述ROP代码的ROP有效负载来隐藏与敏感性质的指定功能相关联的代码。可以用与指定功能不相关的杂散代码替代原始代码,并且提供控制流指令来加载ROP有效负载以执行ROP代码。
根据本发明的一个方面,提供一种执行混淆代码的方法。所述方法包括:
在具有ROP嵌入式主机程序的移动设备中,响应于调用与从所述ROP嵌入式主机程序省略的客户代码相关联的指定功能,检索ROP有效负载,所述ROP嵌入式主机程序包含用于实行所述指定功能的ROP代码;以及
使用所述ROP有效负载重新设置移动设备的存储器寄存器,从而执行用于实行与客户代码相关联的调用功能的ROP代码。
在以上方法的一个实施例中,检索ROP有效负载包含从移动设备将获得与调用功能相关联的数据的请求发送到远程服务器,并且从所述服务器接收所请求的数据和ROP有效负载这两者。
在以上方法的另一个实施例中,检索ROP有效负载包含从移动设备中的存储器设备检索ROP有效负载。
根据本发明的另一个方面,提供一种代码混淆方法。所述方法包括:
从具有客户代码的主机程序代码中识别与所述客户代码相关的多个片段并且确定对应于所述片段的多个返回地址;
通过修改将存储于存储器寄存器中的返回地址创建连接片段的ROP代码,其中所述ROP代码将实行客户代码的指定功能;
构造ROP有效负载,所述ROP有效负载包含客户代码所需的参数数据、片段的返回地址,以及用于重新设置存储器寄存器以执行ROP代码的数据段;
用杂散代码替代主机程序代码中的客户代码;
提供用于用ROP有效负载重新设置存储器寄存器的命令码;以及
将ROP有效负载存储在存储器设备处,其中所述ROP有效负载用于在运行时被调用,从而执行用于实行与客户代码相关联的指定功能的ROP代码。
在以上方法的一个实施例中,存储器设备位于服务器计算机处,所述服务器计算机远离将安装有包含ROP代码的ROP嵌入式主机程序的移动设备。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为国际有限公司;新加坡管理大学,未经华为国际有限公司;新加坡管理大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680009011.3/2.html,转载请声明来源钻瓜专利网。