用于基于编译器的混淆的方法和计算设备技术

技术编号:12409127 阅读:65 留言:0更新日期:2015-11-29 17:23
描述了基于编译器的混淆。为了用混淆来保护代码项目的各部分,作为编译过程的一部分在编译器内修改该代码以产生使代码混淆的一个或多个修改。生成代码的已编译版本,其具有在编译器内产生的修改。在一个方法中,将编译器配置成消耗混淆描述,该混淆描述指示要保护的代码部分并指定要对所指示部分进行的修改。可在编译过程期间执行代码的各种不同修改以实现相应的混淆特征。例如,在编译器内进行的修改可包括但不限于被设计成使得能够实现代码的篡改检测、反调试和/或加密的修改。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】
技术介绍
与开发应用程序及其它代码相关联的一个挑战是保护代码的敏感部分不被修改、禁用或逆向工程。例如,可执行被设计成实现用于应用程序模块的电子许可和/或数字权限管理的代码部分的保护,以防止第三方围绕代码进行工作而非法地使用和/或分发该应用程序模块。开发者可直接地在对应用程序进行源编码的同时添加一些保护措施,然而,这对于开发者而言可能是相当麻烦且耗费时间的。另一方法涉及到在由编译器输出文件之后向已编译的二进制文件施加保护。然而,使已编译二进制码混淆可以使得一些二进制码变得不稳定,限制可用的混淆和代码优化的类型,并且增加开发过程的复杂性和时间。此外,被用于传统混淆的一些技术在运行时间或者通过磁盘上的二进制码的静态分析来检测是相当简单的,特别是由老练的黑客。传统混淆技术的这些及其它复杂性充当使得其低效且抑制开发者向其代码添加有效保护的障碍。
技术实现思路
描述了基于编译器的混淆。为了用混淆来保护代码项目的各部分,作为编译过程的一部分在编译器内修改该代码以产生使代码混淆的一个或多个修改。生成代码的已编译版本,其具有在编译器内产生的修改。在一个方法中,将编译器配置成消耗混淆描述,该混淆描述指示要保护的代码部分并指定要对所指示部分进行的修改。可在编译过程期间执行代码的各种不同修改以实现相应的混淆特征。例如,在编译器内进行的修改可包括但不限于被设计成使得能够实现代码的篡改检测、反调试和/或加密的修改。本
技术实现思路
被提供用来以简化形式介绍下面在【具体实施方式】中进一步描述的概念的选择。本
技术实现思路
并不意图标识要求保护的主题的关键特征或必要特征,其也不意图用作确定要求保护的主题的范围的辅助。【附图说明】参考附图来描述【具体实施方式】。在图中,附图标记的(多个)最左数字标识该附图标记第一次在其中出现的图。相同附图标记在本描述和图中的不同实例中的使用可指示类似或相同的项目。图1是可操作用于采用基于编译器的混淆技术的示例实施方式中的环境的图示。图2是描述表示可发生以产生用混淆保护的已编译代码的操作的基于编译器的示例混淆的图。图3是描绘其中作为针对开发项目的编译代码的一部分产生用混淆保护的已编译代码的示例实施方式中的工序的流程图。图4是描绘其中作为编译过程的一部分对中间语言代码进行修改以产生已混淆代码的示例实施方式中的工序的流程图。图5是描绘其中经由集成开发环境来执行基于编译器的混淆的示例实施方式中的工序的流程图。图6图示出可以用来实现本文所述的技术的实施例的示例系统和系统的部件。【具体实施方式】概沭 开发者使用传统混淆技术向其代码添加有效的保护以防止第三方非法地使用或分发代码可能是困难或不可能的。在源编码期间或者对由编译器输出的已编译二进制码应用的传统混淆技术可提供有限的保护选项,使用在运行时间检测起来相当简单的技术,和/或增加开发过程的时间/复杂性/成本。在本文中描述了基于编译器的混淆。为了用混淆来保护代码项目的各部分,作为编译过程的一部分在编译器内修改该代码以产生使代码混淆的一个或多个修改。生成代码的已编译版本,其具有在编译器内产生的修改。在一个方法中,将编译器配置成消耗混淆描述,该混淆描述指示要保护的代码部分并指定要对所指示部分进行的修改。可在编译过程期间执行代码的各种不同修改以实现相应的混淆特征。例如,在编译器内进行的修改可包括但不限于被设计成使得能够实现代码的加密、反调试和/或篡改检测的修改。在以下讨论中,首先描述可采用本文所述的基于编译器的混淆技术的示例环境。接下来,描述图示出基于编译器的混淆的示例细节的示例过程流程情形。然后描述可在该示例环境以及其它环境中执行的示例工序。因此,示例工序的执行不限于该示例环境,并且该示例环境不限于示例工序的执行。最后,描述可以在基于编译器的混淆的一个或多个实施方式中采用的示例系统和该系统的部件。示例操作环境 图1是可操作用于采用本文所述的技术的示例实施方式中的环境100的图示。所图示的环境100包括经由网络106被通信耦合的计算设备102和web服务104。可将计算设备102配置成访问通过网络106经由web服务104使得可用的多种资源105 (例如,内容和服务)并与之相交互。计算设备102和web服务104每个可由范围广泛的计算设备实现。例如,可将计算设备102配置为能够通过网络106进行通信的计算机,诸如台式计算机、移动站、娱乐装置、平板电脑或平板型设备、表面计算设备、被通信耦合到显示设备的机顶盒、移动通信设备(例如,无线电话)、游戏控制台等。可将计算设备102配置为采用各种处理系统的任何适当的计算系统和/或设备,相对于图6的示例系统来讨论其一些附加示例。计算设备102被进一步图示为包括操作系统108。一般而言,操作系统108被配置成将计算设备102的底层功能抽象化成可在计算设备102上执行的应用程序110。例如,操作系统108可将计算设备102的处理、存储器、网络和/或显示功能进行抽象,使得可在不知道“如何”实现此底层功能的情况下编写应用程序110。应用程序110例如可向操作系统108提供数据以由显示设备再现和显示而不知道此再现将如何执行。操作系统108可提供应用程序I1可调用以利用系统特征的各种服务、接口以及功能。设想向计算设备102提供范围广泛的功能的多种应用程序110,包括但不限于浏览器、办公室生产率应用程序、电子邮件客户端、多媒体管理程序、设备管理软件、软件开发环境和联网应用程序,仅举几个示例。计算设备102还包括开发模块112,其表示可操作用于提供用于开发应用程序110的集成开发环境(IDE)的功能。开发模块112—般地提供应用程序生命周期管理,包括对于应用程序的设计、开发、测试和/或部署的支持。开发模块112可支持不同的编程语言并将不同的部件集成以简化应用程序开发,诸如代码编辑器、一个或多个编译器、构建自动化工具、调试器等。因此,开发模块112提供用于开发者创建/编辑用于项目的源内容/代码并编译该源内容/代码以构建应用程序110的功能。根据本文所述的技术,开发模块112还可包括或者另外利用如本文所述地操作的编译器模块114和混淆模块116。编译器模块114表示可操作用于实现编译过程以将用于开发项目的源代码文件变换成机器语言代码和可执行指令(例如,目标代码、二进制文件、可执行文件等)的功能。编译器模块114可包括多个不同的子模块、处理步骤和/或编译阶段。例如,编译器模块可包括前端编译器和后端编译器两者。虽然被图示为单独的模块,但还可将混淆模块116提供为编译器模块114的集成部件。此外,在一些实施方式中,可将开发模块112、编译器模块114和/或混淆模块116中的一个或多个配置为使得可通过网络106被客户端访问的web服务(例如,作为“在云中”的开发服务或混淆服务)。在本示例中,开发者可能能够通过与web服务104的交互来开发应用程序,所述web服务104提供包括代码混淆工具/接口作为在线可用的资源105的应用程序开发工具。混淆模块116表示可操作使得代码混淆技术能够作为编译过程的一部分由编译器模块114执行的功能。一般而言,如本文所使用的混淆指代以不同的方式修改代码以使得其难以理解。可采用混淆来隐藏代码的意义和目的,即使代码被以本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/CN105103127.html" title="用于基于编译器的混淆的方法和计算设备原文来自X技术">用于基于编译器的混淆的方法和计算设备</a>

【技术保护点】
一种方法,包括:作为代码编译的一部分在编译器内修改用于开发项目的代码以产生一个或多个修改以使代码的一部分混淆;以及由编译器生成代码的已编译版本,该已编译版本具有在编译器内产生以使所述代码部分混淆的修改。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:OA米勒T岑HT波斯坦奇MT帕什尼亚克KS佩特尔
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1