CN102576391A - 嵌入在shell代码中的软件许可 - Google Patents

嵌入在shell代码中的软件许可 Download PDF

Info

Publication number
CN102576391A
CN102576391A CN2009801618920A CN200980161892A CN102576391A CN 102576391 A CN102576391 A CN 102576391A CN 2009801618920 A CN2009801618920 A CN 2009801618920A CN 200980161892 A CN200980161892 A CN 200980161892A CN 102576391 A CN102576391 A CN 102576391A
Authority
CN
China
Prior art keywords
code
application program
shelled
application
shell
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2009801618920A
Other languages
English (en)
Other versions
CN102576391B (zh
Inventor
程彼得
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAFENET公司
Thales DIS CPL USA Inc
Original Assignee
SafeNet Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SafeNet Inc filed Critical SafeNet Inc
Publication of CN102576391A publication Critical patent/CN102576391A/zh
Application granted granted Critical
Publication of CN102576391B publication Critical patent/CN102576391B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Abstract

本发明提供用于保护和验证初始应用程序许可的软件应用程序保护方法和系统。所述系统读取初始应用程序可执行文件,并且生成包涵初始应用程序的shelled应用程序和包括许可信息的shell。Shelled应用程序实现许可APIs,并且在初始应用程序和shell之间的shelled应用程序内建立安全通信。用于初始应用程序的许可仅由shelled应用程序验证。

Description

嵌入在shell代码中的软件许可
技术领域
本发明涉及保护从未经过授权的复制和/或执行软件的系统和方法,尤其是指,涉及一种系统和方法,通过包含嵌入的许可信息和/或通过安全通道和受保护的应用程序进行通信的shell代码来保护软件。
背景技术
对于软件供应商而言,软件盗版是一个持续存在的问题。许多阻止软件盗版的技术已经被开发,并且结合这些技术的产品被软件供应商使用以确保未授权的复制和/或使用他们的软件应用程序。
一种软件应用保护技术使用链接模块,所述链接模块需要开发者修改原始的应用程序代码来调用特定的功能,例如,用于许可条件的检查功能。另一种保护技术被称为Shelling。Shelling通常不需要改变应用程序代码。伴随着Shelling技术,shell产生进程读取原始的应用程序可执行文件并且产生修改的新的可执行文件作为所谓的被加外壳(Shelled)应用程序,所述Shelled应用程序包含封装原始应用程序的保护代码的”外层”。进一步地,当使用Shelling时,一个或更多的应用程序部分,例如可执行的代码、数据、输入表、资源等等,当生成shell代码时能够通过加密和/或压缩被保护,并且当被保护的应用程序运行时需要shell使得被保护的代码部分可用。
shell通常执行一个功能以确认用于应用程序的有效许可存在。例如,传统的基于shell的应用程序保护的解决方案通常将带有存储许可的shell代码的被保护的应用程序进行包装或从被保护的应用程序中分离出存储位置中的关键信息。许可信息可以被存储在注册表、数据库、文件、隐藏的磁盘扇区等等。提供一个或更多的应用程序编程接口(APIs)以访问许可信息,并且shell代码能够调用应用程序编程接口(APIs)以验证被保护的应用程序是否被正确地许可。
在Shelling中固有的一个漏洞是仅由保护的外层提供软件应用程序保护。因此,破解者可能能够通过破解唯一的保护外层以获得访问被保护的应用程序。当启动Shelled应用程序时,shell代码在原始的应用程序代码之前执行,并且shell代码执行通常在固定的可识别的模式中执行。破解者能够按照代码执行(例如,通过运行在调试器下的shelled程序),并且一旦代码执行序列被了解,破解者能够修改代码(例如,通过给shelled应用程序可执行文件打补丁)以绕过和/或禁用许可检查。
链接模块和Shelling也可以一起使用。例如,在一种情况中,shell代码能够被附加到被加密和/或被压缩的应用程序部分。当shelled应用程序第一次执行时,shell最初获得控制并且能够执行与安全相关的功能,例如检查应用程序的完整性、检查调试器的存在、解密和/或解压缩应用程序部分,并且在将控制传递给应用程序之前初始化应用程序进程,例如输入功能表和再定位表。原始的应用程序代码也能够被修改用于重定向一些系统应用程序编程接口(APIs)到shell代码中。然后,应用程序能够继续在控制被转移到应用程序之后与shell代码进行交互。此外,自我修改的代码功能能够根据shell被提供,例如,在运行时加密某些应用程序代码片段,并且shell代码能够在所述代码片段被执行之前解密那些代码片段,并且在它们运行后被再次加密。
然而,在使用Shelling的解决方案中,应用程序代码和Shelled应用程序的shell代码驻留在具有可识别地不同地址的存储器的不同部分。现有技术中,Shelling解决方案没有掩盖应用程序代码地址和shell代码地址之间的不同。因此,破解者可以能够解开受保护的应用程序代码并且确定哪些是shell部分的代码,及哪些是shell保护的应用程序的部分。如果是的话,破解者能够继续删除或修改shell代码和应用程序代码之间的链接。例如,在程序执行过程中,加密和解密代码能够通过使用无操作(NOP)指令被禁用,以取代解密和加密指令。
图1显示了传统的实现自我修改代码功能的示例。如上所示,打包工具使用两个宏来确定被保护的代码,SHELL_CRYPT_BEGIN和SHELL_CRYPT_END。在编译和打包之后,图2A和图2B显示了反汇编代码。
在应用程序被编译之后,生成保护shell代码并且生成Shelled应用程序可执行文件。然后,Shelled 应用程序可执行文件能够被破解者使用调试工具来检查,例如OllyDbg,例如,拆卸Shelled应用程序可执行文件,或二进制代码。OllyDbg是强调二进制代码分析的调试器。它能够跟踪注册表、确认程序、API调用、开关、表、常量和字符串,并且从目标文件和库中定位例程。这类的工具能够被用于逆向工程和破解程序。
图2A显示出这类反汇编代码的示例性片段。在每一行的开头显示程序地址,并且都具有格式0040XXXX。在地址004013A2的代码调用在地址004A6B81(代码的顶端行)处的代码来解密代码的后续行。在执行地址004013A2的代码之后,在图2B中显示被更改的代码。明显地,所谓地址004A6B81和004AADBB(在图2A和图2B中在第004013A2和004013BD行的调用语句中强调)被放置在和程序代码地址不同的地址部分,所述程序代码地址在,即地址0040XXXX处的每一行的代码的开头指示。破解者可能推测0040XXXX形式的地址位置属于应用程序代码地址空间,然而0040XXXX形式的地址位置属于shell代码地址空间。
在图3中示例了不同代码部分,其中不同块表示了位于不同地址空间的代码部分。如图所示,不同代码部分的地址空间具有可识别的界限。示例性地,在程序执行的过程中,shell代码能够根据需要解密和加密应用程序代码的部分,从而提高应用程序代码的安全性。即便如此,破解者可能能够分析程序,识别解密和加密shell进程的存在,并且移除在shell代码和应用程序代码之间的链接,例如,通过使用无操作(NOP)指令来取代加密指令。类似地,破解者可能能够识别检查进程的许可的存在,并且删除Shelled应用程序代码和存储在Shelled应用程序的外部的许可信息之间的链接。
因此,需要一种应用程序保护技术去抑制破解,使得对于破解者来说更困难地解除许可检查和/或修改在应用程序代码和shell代码之间的通信。
发明内容
本发明披露了在shell中嵌入应用程序软件许可信息,以及确保shell和Shelled应用程序中的应用程序代码之间的通信。在shell产生过程中,许可能够被嵌入在shell代码中。在shell中能够提供一组应用程序编程接口(APIs)并且应用程序能够被修改便于和应用程序编程接口(APIs)交互以访问许可信息。应用程序代码和shell代码能够使用安全通道以加强他们之间的通信链接的安全。
可以理解的是,无论是上述的一般性描述还是下面的详细的描述都是示例性的和解释性的,旨在进一步地提供本发明的保护范围。
附图说明
附图被用于提供对本发明进一步地理解,并且示出了本发明的优选实施例和说明的特征。所述附图和具体实施方式一起用于解释本发明的原理,所附的权利要求书定义了本发明的保护范围。
在图中。
图1显示用于初始化生成保护的shell的代码。
图2A和图2B显示shelled应用程序代码的修改以作为shelled应用程序可执行文件。
图3显示在shelled应用程序的代码段之间的边界,以及在shelled应用程序中执行加密和解密操作。
图4为显示出用于实现本发明所披露的系统和方法的示例性硬件环境的框图。
图5为显示出用于保护软件应用程序的示例性shelling过程的流程图。
图6为显示出如何执行受图5中示出的shelling过程保护的软件应用程序的流程图。
图7显示在shelled应用程序的shell代码和应用程序代码之间建立安全通道。
图8示出了示例性的许可限制元素。
图9示出了示例性的限制类型和描述。
图10示出了示例性的shell许可应用程序编程接口(API)功能。
具体实施方式
图4显示了一个能够被用于实现本发明所披露的系统和方法的示例性的计算机系统400。计算机402包括一个处理器404和一个存储器,例如随机存取存储器(RAM)406。可操作地,计算机402连接到一个显示器422,所述显示器422显示例如windows在图形用户界面(GUI)418B上显示给用户的图像。计算机402可被连接到其它设备,例如键盘414、鼠标416、打印机428等等。本领域技术人员将认识到上述组件、外设和其它设备的任意组合,可与计算机402一起被使用。
一般来说,计算机402在存储于存储器406中的操作系统408的控制下操作,并且和用户连接以接收输入和指令,以及通过图形用户界面(GUI)模块418A显示结果。虽然GUI模块418A被描述为一个独立的模块,但是执行GUI功能的指令能够被驻留或分布在操作系统408、计算机程序410中或者在具有特殊用途的存储器和处理器上被实施。计算机402也实现了编译器412,所述编译器412允许初始地用编程语言,例如C、C++、Visual Basic、Delphi、或其它编程语言描述的应用程序410被编译(翻译)为处理器404可读的代码。在完成后,编译过的应用程序410使用由编译器412生成的关系和逻辑访问和操作存储在计算机402的存储器406中的数据。可选择地,计算机402包括一个通讯设备440,例如调制解调器、网卡、或其它用于与外部设备430如其它计算机,存储设备等通讯的设备。
在一个实施例中,指令执行操作系统408,计算机程序410,和编译器412切实地体现在计算机可读的存储介质中,例如,数据存储设备420,所述数据存储设备能够包括一个或多个固定的或可移除的数据存储设备,例如一个硬盘驱动器、一个光盘驱动器、闪存驱动器、磁带驱动器等等。进一步地,操作系统408和计算机程序410包括一些指令,当由计算机402读取和执行这些指令时,导致计算机402去执行必要的步骤以实现和/或使用本发明所披露的系统和方法。计算机程序410和/或操作系统408指令可能也被切实地体现在存储器406、数据存储设备420、和/或外部设备430,因此,根据本发明所披露的系统和方法产生计算机程序产品或制造的方案。例如,本文所使用的术语“制造的方案”、“程序存储设备”和“计算机程序产品”旨在包括来自任何计算机可读设备或者存储介质计算机程序访问。
图5示出了示例性的计算机实现的软件应用程序保护系统和shelling过程。启动代码发生器505生成启动代码504。未受保护的初始应用程序可执行代码500、应用程序许可信息502和启动代码504被提供给shelled应用程序发生器506。Shelled 应用程序发生器506由此生成新的受保护的可执行文件作为shelled 应用程序508。启动代码能够被合并到shell和嵌入在shell中的许可信息中。带有嵌入的许可信息和应用程序可执行文件的shell被合并,以便形成shelled应用程序508,所述shelled应用程序508即包括shell代码510又包括应用程序代码512。在一个实施例中,应用程序可执行文件在shelling过程中能够被加密引擎507加密,因此,shelled应用程序包括一个作为应用程序代码512的应用程序可执行文件的加密版本。许可信息也能够被加密引擎507加密,因此shelled应用程序包涵嵌入在shell代码510内的许可信息的加密版本。
图6是shelled应用程序508的执行流程图。在模块602中,启动shelled应用程序508的执行,并且在模块604中执行shell代码510。在shell510中的启动代码初始化一个或多个操作以便确定应用程序可执行文件的执行是否被授权。在一个实施例中,授权过程包括允许应用程序去检查一个或多个有效的许可条件606。在模块608和616中显示,如果受保护的可执行文件的执行并没有被授权(例如,许可信息是无法访问的和/或shell提供一个关于许可信息的请求的错误响应),shelled应用程序508的执行停止。在模块614中显示,如果许可信息被验证通过,那么执行应用程序代码512。在模块610中显示,如果需要的话,也能够执行其它操作,例如重定位数据链接库(DLLs)、设立所需的导入表。在模块612中显示,如果加密产生了可执行应用程序代码,和/或解密应用程序代码512。
图7显示了shelled应用程序700,所述shelled应用程序700中的应用程序代码702访问嵌入在shell代码706中的许可信息704。如前所述,在打包的过程中,也就是在shelled应用程序700生成的过程中,许可信息704被嵌入在shell代码706中。Shell许可库708能够被提供给shell706,包括一组由应用程序702使用以访问许可信息704的API组。在执行shelling过程之前,软件安全模块,被简称为调用安全检查,能够被插入到应用程序702中以便和shell706进行通信,例如生成与许可信息相关的请求。在应用程序内的软件安全模块组构成了安全客户端库710。当运行shelled应用程序700时,其启动能处理来自应用程序的与许可相关的请求的通讯服务线程712。应用程序702使用安全客户端库710以生成对请求许可信息704的API的调用。通讯服务线程712访问在shell许可库708内的shell许可API,如需要满足请求的话,其访问和返回许可信息704。
在应用程序702和shell706之间发送与许可相关的请求、响应、和其他消息。安全通道714可以由在应用程序702和shell706之间的通信服务线程进行设置。例如,安全客户端的库710可能包括一个或更多用于安全通信的软件安全模块。所述shelled应用程序700可以包括一个伪随机数生成器,以及所述安全客户端的库710和/或所述通信服务线程712可以由此生成随机的一次性会话密钥用于通过安全通道714在应用程序和shell之间通信的安全消息。所述消息可以使用任何合适的进程间通信(IPC)方法,例如命名管道、TCP/IP协议、邮箱等等。
在一个示范性实施例中,许可信息能够包括多种类型的一个或更多的特征,每个特征包括一个或更多的元素。示例性地,特征类型能够包括数据、椭圆曲线加密(ECC)、高级加密标准(AES)以及限制特征。也可以使用附加的或其它的特征类型。
关于数据特征类型,应用程序开发者能够做到,例如,由应用程序为用户存储数据到数据特征元素,并且应用程序能够调用API以便读取存储的数据,例如下面描述的示例性SCL_FeatureRead API和其它的示例性的API。ECC特征能够包括ECC私钥,并且,例如,能够使用椭圆曲线签名方案,例如ECCSH,被用于签署消息内容。应用程序能够调用API,例如SCL_FeatureSign,以签名消息数据,并且然后调用另一个API,例如SCL_ FeatureVerify,以验证应用程序内的签名结果。类似地,AES特征能够包括AES算法的密钥,并且应用程序能够调用例如SCL_FeatureQuery的API以获得响应,所述响应和存储在应用程序内的以前的响应相比较。应用程序也能够调用API,例如SCL_FeatureEncrypt 和 SCL_FeatureDecrypt,用于分别加密和/或解密应用程序数据。最后,限制特征提供许可限制,例如必须为应用程序的运行或使用某些应用程序功能之前满足的限制。应用程序代码能够调用shell许可API以访问嵌入到shell代码内的许可信息。
在一个示范性实施例中,这类许可信息可能被嵌入到在shell代码和应用程序代码之间通信的消息内以作为类型-长度-值(TLV)元素,最多达256字节的长度,在数据通信协议内被使用。每个这类元素包括仅一个许可信息块,或“限制特征”。TLV元素包括至少三种字段种类:类型、长度和数值。类型字段是数字代码,表示元素所代表的许可信息的种类。长度字段表示元素的大小或者字节内的数值字段。数值字段是可变大小的字段,其包括许可限制特征信息。
在每个许可限制元素中也存在其它字段。图8示出了一个示范性许可限制元素的字段。除了上述的类型、长度和价值字段,每个元素包括一个特征识别字段和一个检查标记字段。特征识别字段识别元素所代表的信息源。检查标记字段被用来检查数据的完整性。嵌入在shell代码中的许可信息可能被加密存储,并当被访问时解密。
图9列出了示范性的特征类型和识别、以及相关的功能描述,能够被作为许可限制使用。如图所示,显示了三种类型的限制:锁限制、环境限制和试用限制。如果限制未满足的话,每个限制能够被用来阻止应用程序启动或执行某些功能。锁限制涉及应用程序或其用户正在运行的计算机,例如用户名称,或运行shelled应用程序的计算机中的网卡的网卡介质访问控制(MAC)地址,或处理器ID,或磁盘序列号等等。环境限制涉及shelled应用程序正被运行的操作环境,例如是否检测调试器的存在。试用限制涉及在试验试用期shelled应用程序的限制使用。图9中列出的限制是为了示范性的目的,也能够使用其它限制类型、识别以及描述。
如前面图7所述,shell许可库708包括一组由应用程序702使用以用于访问许可信息704的API组。图10A和10B提供示例性的示范例API的名称和格式,由应用程序调用示范性API以便访问嵌入在shell代码中的许可信息。在API的名称说明中,“SCL”是安全客户端库的一个简单缩写。
SCL_OpenLicense—这个API被用于创建在shelled应用程序内的shell代码和应用程序代码之间的安全通道,并且得到许可句柄。如果其成功返回,后续通讯包可以通过安全通道被传达。如果许可具有不能满足的限制特征,一个错误信息将被返还。
SCL_FeatureQuery—这个API被用于产生基于高级加密标准(AES)特征识别和查询的数据的加密的响应。
SCL_FeatureRead—这个API被用于通过数据特征读取存储的数据。
SCL_FeatureEncrypt—这个API被用于加密基于高级加密标准(AES)特征识别的提供的明文数据。
SCL_FeatureDecrypt—这个API被用于解密基于高级加密标准(AES)特征识别的提供的密码数据。
SCL_FeatureVerify—这个API被用于验证使用基于ECC特征识别的ECC特征公钥的数字签名内容。
SCL_FeatureSign—这个API被用于签署使用基于ECC特征识别的算法的内容。
SCL_CloseLicense—这个API被用于关闭安全通道和施放许可句柄。
本发明所披露的系统和方法的一个优点在于,为了测试的目的,在打包过程之前能够提供虚拟的shell许可。虚拟shell许可是一种能够模拟所有shell许可功能的服务。在调试和开发的过程中,库能够访问这个服务器,并且在添加shell之后,在应用程序中的库能够访问shell代码中的许可。在一个示范性实施例中,本发明所披露的系统和方法能够被用于使得每个shelled应用程序实例是独一无二的,例如,通过各种压缩或者加密方法和/或组合。使用一个或多个与供应商相关的要素,例如供应商ID或应用程序名称,也能够加密许可信息。许可信息也能够被一个或多个非对称算法签名。
除了上述所述的示范性实施例,各种其它的修改和变化也未超过本发明所涵盖的范围。因此,需要指出的是,本发明包括所有类似的修改和变化涵盖在本发明所附的权利要求和他们等同范围内。

Claims (19)

1.来自原始的软件应用程序可执行文件、包括初始的应用程序可执行文件和用于应用程序的许可信息的保护的可执行文件的生成方法,所述方法包括:
生成被保护的用于初始应用程序的启动代码;
获取初始应用程序的计算机可执行文件的代码,和用于初始应用程序的许可信息;和
生成受保护的应用程序可执行文件作为shelled应用程序,包括初始应用程序可执行文件作为应用程序代码,和嵌入许可信息和包括作为shell代码的启动代码的shell;
其特征在于,在启动shelled应用程序之后,shelled应用程序单独使用嵌入的许可信息授权初始应用程序的使用。
2.如权利要求1所述的方法,其中所述的shelled 应用程序包括实现用于在应用程序代码和shell代码之间的shelled应用程序内的安全通道的指令,以及实现以便访问在shell代码中的许可信息的用于应用程序代码的至少一个应用程序编程接口API的指令,其中,在执行的过程中,shelled应用程序能够执行的方法包括:
在shelled应用程序内,从应用程序代码中调用API;
生成安全通信会话密钥;
使用所述密钥用来建立在应用程序代码和shell代码之间的shelled应用程序内的安全通道;以及
使用所述安全通道在所述应用程序代码和所述shell代码之间通信。
3.如权利要求2所述的方法,其中所述的由shelled应用程序执行的方法进一步包括启动通信服务线程以便处理来自应用程序代码的用于许可信息的请求,其中,生成会话密钥的步骤,使用所述密钥以便建立安全通道,以及使用由所述服务线程处理的以响应API调用的所述信道的通信。
4.如权利要求2所述的方法,其中由所述的安全通道所使用的所述通信协议包括进程间通信(IPC)、传输控制协议/Internet协议(TCP/IP)、命名管道、邮件槽的其中之一。
5.如权利要求1所述的方法,其中所述的创建shelled应用程序的步骤进一步包括加密许可信息。
6.如权利要求5所述的方法,其中使用所述的特定供应商信息来完成所述的加密步骤。
7.如权利要求6所述的方法,其中所述的特定供应商信息包括至少一个应用程序名称和唯一的供应商标识符(ID)。
8.如权利要求2所述的方法,其中,使用所述的API以请求许可句柄;其中,如果成功地返回句柄,在应用程序和shell之间经由所述安全通道至少一个数据包被随后发送。
9.如权利要求8所述的方法,其中,调用所述API以满足至少一个许可限制,并且如果限制未满足,不返回句柄以及所述API返回错误信息。
10.如权利要求9所述的方法,其中所述限制是用户名称、系统分区卷的序列号、网卡介质访问控制(MAC)地址,主机名称、internet协议(IP)地址、处理器ID、操作系统(OS)安装日期/时间、通用串行总线(USB)存储类型或序列号、物理磁盘类型或序列号、显卡类型、随机访问存储器(RAM)大小、客户端时区、虚拟机的检测、终端服务的检测、调试器的检测、试用开始日期、试用结束日期中的任一一个。
11.用于创建shelled应用程序的计算机可实施的软件应用程序保护系统,包括受保护的初始应用程序代码和含有用于初始应用程序的嵌入的许可信息的shell代码,所述系统包括:
用于产生启动代码的启动代码生成器;和
Shelled应用程序生成器,以产生受保护应用程序可执行文件,作为来自启动代码的shelled应用程序,初始的软件应用程序可执行文件,和应用程序许可信息;
其特征在于,所述shelled应用程序包括作为应用程序代码的初始的软件应用程序可执行文件,和包括启动代码和作为shell代码的许可信息的shell。
12.如权利要求11所述的软件保护系统,其中,所述shelled应用程序的应用程序代码包括用于调用至少一个应用程序编程接口(API)的代码,以及,shell代码包括所述被调用的API并且使用所述API以访问许可信息。
13.如权利要求12所述的软件保护系统,其中,所述的shelled应用程序进一步地包括产生随机一次性会话密钥的伪随机数据产生器,用于建立在shelled应用程序内应用程序代码和shell代码之间的安全通道。
14.如权利要求13所述的软件保护系统,其中,所述的shelled应用程序进一步包括通讯服务线程产生器,以便产生用于处理来自应用程序代码的至少一个API调用以及提供返回的通讯服务线程,其中,所述处理包括产生会话密钥,使用所述密钥以建立在shelled应用程序内应用程序代码和shell代码之间的安全通讯,以及使用所述安全通道通讯数据包用于响应API调用。
15.存储计算机指令的计算机可读存储介质,当计算机读取所述计算机可读存储介质时,由下述方法触发所述计算机以产生受保护的可执行文件,其来自初始的软件应用程序可执行文件,所述受保护的可执行文件包括初始的应用程序可执行文件和用于应用程序的许可信息,所述方法包括:
产生用于初始的将受保护的应用程序的shell代码,所述shell代码包括启动信息和许可信息;
获得初始应用程序的计算机可执行文件代码;和
产生受保护的应用程序可执行文件作为shelled应用程序,包括初始的应用程序可执行文件作为应用程序代码,和在shell内嵌入许可信息作为shell代码;
其特征在于,在运行shelled应用程序之后,初始应用程序的使用能够被shelled应用程序使用嵌入的许可信息授权。
16.如权利要求15所述的计算机可读存储介质,其中shelled应用程序包括用于shelled应用程序内部在应用程序代码和shell代码之间实现安全通道的指令,和用于实现应用程序代码的至少一个应用程序编程接口(API)的用于访问shell代码中的许可信息的指令,其中,在执行shelled应用程序期间执行的方法,包括:
调用来自shelled应用程序内的应用程序代码的API;
产生安全通信会话密钥;
使用所述密钥在shelled应用程序内部的应用程序代码和shell代码之间建立安全通道;和
在应用程序代码和shell代码之间使用安全通道通讯。
17.如权利要求16所述的计算机可读存储介质,其中,由所述shelled应用程序执行的方法进一步包括启动通信服务线程以处理来自应用程序代码的用于许可信息的请求,即生成会话密钥的步骤,使用所述密钥以建立安全通道,并使用由所述服务线程处理的所述通道进行通信以响应对API的调用。
18.如权利要求16所述的计算机可读存储介质,其中,所述安全通道使用的通信协议是进程间通信(IPC)、传输控制协议/Internet协议(TCP/IP)、命名管道和邮件槽的其中之一。
19.如权利要求15所述的计算机可读存储介质,其中,所述方法进一步包括加密许可信息。
CN200980161892.0A 2009-10-12 2009-10-12 嵌入在shell代码中的软件许可 Expired - Fee Related CN102576391B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2009/001133 WO2011044710A1 (en) 2009-10-12 2009-10-12 Software license embedded in shell code

Publications (2)

Publication Number Publication Date
CN102576391A true CN102576391A (zh) 2012-07-11
CN102576391B CN102576391B (zh) 2015-03-04

Family

ID=43875771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980161892.0A Expired - Fee Related CN102576391B (zh) 2009-10-12 2009-10-12 嵌入在shell代码中的软件许可

Country Status (5)

Country Link
US (1) US8205096B2 (zh)
EP (1) EP2488982A4 (zh)
JP (1) JP5596159B2 (zh)
CN (1) CN102576391B (zh)
WO (1) WO2011044710A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104904181A (zh) * 2013-03-15 2015-09-09 甲骨文国际公司 在计算机上的应用之间建立信任

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645992B2 (en) 2010-08-21 2017-05-09 Oracle International Corporation Methods and apparatuses for interaction with web applications and web application data
US11265510B2 (en) * 2010-10-22 2022-03-01 Litl Llc Video integration
US8938809B2 (en) 2011-06-24 2015-01-20 Google Technology Holdings LLC Retrieval of data across multiple partitions of a storage device using digital signatures
US9722972B2 (en) 2012-02-26 2017-08-01 Oracle International Corporation Methods and apparatuses for secure communication
US9202039B2 (en) * 2012-10-05 2015-12-01 Microsoft Technology Licensing, Llc Secure identification of computing device and secure identification methods
CN102890758B (zh) * 2012-10-11 2014-12-17 北京深思洛克软件技术股份有限公司 一种保护可执行文件的方法及系统
MY186747A (en) * 2013-01-14 2021-08-17 Mimos Berhad A system and method for an application execution
US9344422B2 (en) 2013-03-15 2016-05-17 Oracle International Corporation Method to modify android application life cycle to control its execution in a containerized workspace environment
CN104903909B (zh) 2013-03-15 2018-07-31 甲骨文国际公司 在应用之间计算机内受保护的通信的方法及设备
CN103413071B (zh) * 2013-07-09 2016-03-23 北京深思数盾科技有限公司 一种保护软件中数据的方法
KR102263913B1 (ko) 2014-09-24 2021-06-14 오라클 인터내셔날 코포레이션 컨테이너화된 작업공간 환경에서 그것의 실행을 제어하기 위하여 안드로이드 애플리케이션 라이프 사이클을 수정하기 위한 방법
WO2016122623A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Secure api communication
US10027683B2 (en) 2015-07-28 2018-07-17 Entit Software Llc Shared symmetric key encryption
EP3188063A1 (en) * 2015-12-29 2017-07-05 GuardSquare NV A build system
US9979693B2 (en) * 2016-01-28 2018-05-22 Fiber Logic Communications, Inc. IP allocation method for use in telecommunication network automatic construction
US20170352115A1 (en) * 2016-06-01 2017-12-07 Kony Inc. Mobile application licensing tool
DE102016211124A1 (de) * 2016-06-22 2017-12-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Bearbeiten von Binärcodedaten

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
CN1346455A (zh) * 1999-03-12 2002-04-24 Curl公司 对内容实行许可的系统和方法
US6463538B1 (en) * 1998-12-30 2002-10-08 Rainbow Technologies, Inc. Method of software protection using a random code generator
US20070174571A1 (en) * 2006-01-25 2007-07-26 Safenet, Inc. Binding a protected application program to shell code
CN101158911A (zh) * 2007-11-22 2008-04-09 北京飞天诚信科技有限公司 .Net程序保护方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3263878B2 (ja) * 1993-10-06 2002-03-11 日本電信電話株式会社 暗号通信システム
JPH10143362A (ja) * 1996-11-15 1998-05-29 Nippon Avionics Co Ltd ソフトウェアパッケージの使用権管理方法及び装置並びにその方法を可能にする記録媒体
US6434535B1 (en) * 1998-11-13 2002-08-13 Iomega Corporation System for prepayment of electronic content using removable media and for prevention of unauthorized copying of same
US6557105B1 (en) * 1999-04-14 2003-04-29 Tut Systems, Inc. Apparatus and method for cryptographic-based license management
US7263606B2 (en) * 2003-02-25 2007-08-28 Safenet, Inc. Method and apparatus for software protection via multiple-route execution
EP1621958A3 (en) * 2004-07-19 2006-05-17 SONY DEUTSCHLAND GmbH Method for providing protected audio/video content
JP2008287441A (ja) * 2007-05-16 2008-11-27 Toshiba Corp 情報処理装置およびプログラムの不正利用抑止方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
US6463538B1 (en) * 1998-12-30 2002-10-08 Rainbow Technologies, Inc. Method of software protection using a random code generator
CN1346455A (zh) * 1999-03-12 2002-04-24 Curl公司 对内容实行许可的系统和方法
US20070174571A1 (en) * 2006-01-25 2007-07-26 Safenet, Inc. Binding a protected application program to shell code
CN101158911A (zh) * 2007-11-22 2008-04-09 北京飞天诚信科技有限公司 .Net程序保护方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104904181A (zh) * 2013-03-15 2015-09-09 甲骨文国际公司 在计算机上的应用之间建立信任
CN104904181B (zh) * 2013-03-15 2019-05-31 甲骨文国际公司 在计算机上的应用之间建立信任

Also Published As

Publication number Publication date
JP2013507671A (ja) 2013-03-04
JP5596159B2 (ja) 2014-09-24
WO2011044710A1 (en) 2011-04-21
CN102576391B (zh) 2015-03-04
EP2488982A4 (en) 2013-05-29
US20110191593A1 (en) 2011-08-04
EP2488982A1 (en) 2012-08-22
US8205096B2 (en) 2012-06-19

Similar Documents

Publication Publication Date Title
CN102576391B (zh) 嵌入在shell代码中的软件许可
US7549147B2 (en) Security framework for protecting rights in computer software
US7254586B2 (en) Secure and opaque type library providing secure data protection of variables
US10255414B2 (en) Software self-defense systems and methods
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
JP5689472B2 (ja) 悪意ある実行環境内での静的および動的攻撃からJavaバイトコードを保護するシステムおよび方法
JP2019505887A (ja) 信頼できる実行環境を有するモバイル装置
CN106650341A (zh) 基于smali流程混淆技术的Android应用加固方法
CN104318135B (zh) 一种基于可信执行环境的Java代码安全动态载入方法
WO2013170724A1 (zh) 安卓系统中java应用程序的保护方法
JP4892167B2 (ja) ディジタル・データ保護構成
KR20070001893A (ko) 탬퍼-레지스턴트 트러스티드 가상 머신
US11163859B2 (en) Content protection via online servers and code execution in a secure operating system
CN107430650B (zh) 保护计算机程序以抵御逆向工程
Götzfried et al. Soteria: Offline software protection within low-cost embedded devices
Cappaert Code obfuscation techniques for software protection
JP2005235076A (ja) コンピュータシステム、中央装置及びプログラム実行方法
CN111159658B (zh) 字节码处理方法、系统、装置、计算机设备和存储介质
Feichtner A comparative study of misapplied crypto in Android and iOS applications
Aldoseri et al. Symbolic modelling of remote attestation protocols for device and app integrity on Android
CN108259490B (zh) 一种客户端校验方法及装置
Kumbhar et al. Hybrid Encryption for Securing SharedPreferences of Android Applications
CN113221077B (zh) 基于spring容器的class文件加密方法及设备
CN116070179A (zh) 一种AndroidAPP加固方法及系统
Mobile SureWave Mobile Defense Security Kernel

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150304

Termination date: 20161012