一种用于针对逆向工程保护在计算机上可执行的应用程序的方法,所述应用被创建成在所述计算机上用至少一个所选动态链接库(DLL)运行,包括步骤:向可执行应用程序添加特定库加载程序,所述加载程序包含或可访问所述动态链接库;设置对所述动态链接库的已修改参考,使得当将所述应用程序和所述加载程序加载到计算机的主存储器中时,所述动态链接库被所述库加载程序而不是操作系统初始化;可以将库加载程序和伪静态链接库嵌入应用程序中,从而使用应用内的未使用空间。受保护的应用在没有到DLL的易受攻击接口的情况下作为整体应用而呈现本身。
【技术实现步骤摘要】
【国外来华专利技术】【专利摘要】一种用于针对逆向工程保护在计算机上可执行的应用程序的方法,所述应用被创建成在所述计算机上用至少一个所选动态链接库(DLL)运行,包括步骤:向可执行应用程序添加特定库加载程序,所述加载程序包含或可访问所述动态链接库;设置对所述动态链接库的已修改参考,使得当将所述应用程序和所述加载程序加载到计算机的主存储器中时,所述动态链接库被所述库加载程序而不是操作系统初始化;可以将库加载程序和伪静态链接库嵌入应用程序中,从而使用应用内的未使用空间。受保护的应用在没有到DLL的易受攻击接口的情况下作为整体应用而呈现本身。【专利说明】 本专利技术涉及针对逆向工程保护在计算机上可执行的应用程序。当前的应用程序通常不仅使用专门为此应用制作的代码,而且使用将被重新用于多个应用的某个遗传代码。此类代码称为库。库的一般用途一方面是系统特定应用编程接口(API),诸如屏幕上的图、声音输出或向磁盘写入文件。还存在以商业方式或免费地提供以执行特殊的频繁使用功能的许多库。例如,这可以是到数据库系统的接口、执行某个加密任务的密码库或被用于访问特殊硬件的库。可以以不同的形式将库提供给程序员(和用户)。这些不同形式具有不同的性质,其具有不同的优点和缺点。在不同的平台上,不同类型的库具有略微不同的性质,但是跨所有的平台,基本概念仍是相同的。下面,使用用于windows平台的命名,因为这些名称是最常使用的名称。分发代码的最简单形式是以源代码的形式。在这里,库开发者将库的整个源代码分发给应用开发者。这具有某些优点: 1.应用开发者可访问整个库,并且对他来说在他自己的应用程序中或在库中发现错误更为容易。2.应用开发者可以对库进行改变(如果许可期限(licensing terms)允许这样做的话)。3.应用可以是单个文件,并且不存在通过使用库而被添加到应用的单独文件。4.应用针对逆向工程而受到很好的保护,因为API在应用外面是不可见的。5.只有必要的代码进入应用。不需要的代码将不会增大应用的大小。以源代码的形式分发库还涉及某些显著的缺点: 1.库开发者不能保持他的库的内部是秘密的。2.该实施方式将可能仅对一个特定编程语言、编译程序以及版本行得通。对于不同的语言、编译程序或版本,必须存在不同的源代码。3.库中的修正要求应用的新构建(fresh build)。4.如果多个应用使用同一库,则其要求更多的磁盘空间,因为每个应用具有已经内置的库的其自己的拷贝。静态链接库(SLL)是作为编译程序的输出提供的,并且能在生成完整可执行时使用。与源代码库相反,不可能看到实施方式的每个细节或容易地对现有库代码进行改变或修正。SLL的优点是: 1.库开发者能够保持他的库的内部是秘密的。2.应用可以是单个文件,并且不存在通过使用库而被添加到应用的单独文件。3.应用针对逆向工程而受到很好的保护,因为API在应用外面是不可见的。4.只有必要的代码进入应用。不需要的代码将不会增大应用的大小。缺点如下: 1.应用开发者不能对库进行改变。2.应用开发者不可访问整个库。要让他发现库中的错误并不是容易的。3.该实施方式将可能仅对一个特定编程语言、编译程序以及版本行得通。对于不同的语言、编译程序或版本,必须存在不同的库。4.库中的修正要求应用的新构建。5.如果多个应用使用同一库,则其要求更多的磁盘空间,因为每个应用具有已经内置的库的其自己的拷贝。为了对抗具有库的多个实例和每次库被更新都必须重建应用的缺点,已经开发了共享库的概念。在当前的操作系统中,大部分的系统核心功能被存储在此类动态库内部。在Windwos下,这些称为动态链接库(DLL),在Linux下,这些是共享对象(SO),并且在MacOS上,这些是共享对象或框架。为了简单起见,在下文中,术语“动态链接库”或“DLL”将标记任何共享动态库,不管其被制作所用于的操作系统如何。许多应用程序现在使功能跨多个动态库分裂以使得由于具有定义功能的多个单独模块而使开发过程更为容易。动态链接库是变得独立于当前开发环境的方式,因为大多数开发系统提供到系统和第三方提供的动态链接库的接口。使用DLL的优点是: 1.库开发者能够保持他的库的内部是秘密的。2.库将可能仅对大多数编程语言、编译程序以及版本行得通。3.库中的修正要求库的替换。4.如果多个应用使用同一个库,则其被用作共享资源并节省一定的存储器。缺点如下: 1.库被完全加载所有的模块,即使库的仅一小部分被使用。2.应用开发者不能对库进行改变。3.应用未针对逆向工程受到保护,因为API对于外面而言是可见的,并且能够被容易地改向或截取。4.除应用之外,库是需要单独安装的单独文件。5.应用开发者不可访问整个库。要让他发现库中的错误并不是容易的。总而言之,被广泛使用的两个模型是静态链接库(SLL)和动态链接库(DLL)。从开发的观点出发,动态库相比于源代码库和静态库而言具有很大的优点,因为其主要地独立于所使用的编译程序,并且将与不寻常的开发环境一起工作。然而,从知识产权保护和逆向工程预防的观点出发,动态链接库具有明显的优点,因为不存在可用的开放编档且可访问的接口。可以在两个方向上看到静态链接库的更新性质,因为一方面在动态库的情况下修复更加容易,并且另一方面,修复引入新问题是可能的,因为软件现在正在用其并未被设计成用于且从未被测试的库版本运行。本专利技术的目的是针对逆向工程保护被创建成用由操作系统提供的一个或多个动态链接库运行的应用程序,从而避免与静态库的使用有关的缺点。由具有权利要求1的表征部分的方法步骤的方法来实现此目的。还由具有在权利要求9中限定的特征的计算机程序产品来实现该目的。还由根据权利要求11所述的方法来实现本专利技术的目的。本专利技术意图是静态链接库与动态链接库的概念之间的交叉。其尝试建立于两个架构的优点之上。结果得到的开发一方面独立于所使用的开发环境。另一方面,本专利技术避免了动态链接库中的开放可访问接口的逆向工程问题。因此,本专利技术构建了两个不同开发范例、静态库的范例与动态链接库的范例之间的桥梁。应用程序本身的开发是使用普通动态链接库(DLL)完成的。在完成通常的开发过程之后,已编译项目被转换成使用类似于静态库的DLL或将其“伪静态地”链接。根据本专利技术的方法因此适合于针对所有开发环境提供具有与静态链接应用的安全接近的安全、同时为开发者和最终用户提供无须安装附加库的方便的库实施方式。该方法包括或使用相互作用的以下部分: 1.被创建成用动态链接库运行的已编译应用。2.操作系统(OS),例如 Windows、Linux、MacOS、Solaris。3.由操作系统提供的动态链接库(DLL)。4.现在变成将被从应用调用的“伪静态”链接库的DLL。5.充当应用与所使用DLL之间的链接的特殊加载程序。6.软件模块(准备程序),其使应用准备好与加载程序合作,由此,此类准备程序在某些情况下将加载程序集成到应用中。7.构建过程,其对一个或多个动态链接库进行转换以供加载程序使用或用于动态库到加载程序中的集成。在操作系统(OS)水平,通过在应用内部指定所使用的应用编程接口(API)来使用DLL。在应用启动时,操作系统将针对这些参考扫描应用文件,将加载DLL,并将设置对应用内部的必要API的参考。同样本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】...
【专利技术属性】
技术研发人员:P维奇曼恩,A施米特,
申请(专利权)人:威步系统股份公司,
类型:
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。