CN105683990B - 用于保护动态库的方法和装置 - Google Patents
用于保护动态库的方法和装置 Download PDFInfo
- Publication number
- CN105683990B CN105683990B CN201480058818.7A CN201480058818A CN105683990B CN 105683990 B CN105683990 B CN 105683990B CN 201480058818 A CN201480058818 A CN 201480058818A CN 105683990 B CN105683990 B CN 105683990B
- Authority
- CN
- China
- Prior art keywords
- dynamic base
- application program
- protected
- file
- security
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种相对于静态分析工具来保护动态库的方法。用于保护动态库的方法包括:将使用动态库的应用程序加载至主存储器中,其中至少一个动态库是安保动态库;将安保动态库加载至所述主存储器中;动态库建立步骤:通过对被存储在安保动态库中的加密动态库进行解密来生成待保护动态库;并且通过应用程序来调用待保护动态库中包含的特定模块。
Description
技术领域
本发明涉及一种保护动态库不被分析工具分析和攻击的方法。
背景技术
需要指出的是,下面说明的内容仅提供与本发明的各实施例有关的背景信息,且不构成现有技术。
在程序中,库表示预先编制的可反复使用的编译函数。在程序中使用库的原因在于,函数当被反复使用时可被方便地使用,当函数以库的形式被分发时可以隐藏函数的具体实现,并且可以根据需要使用预编译函数,从而便于对其进行维护。
库被分类为静态库和动态库,静态库在程序编译过程中被包含在应用程序的目标文件中,而动态库在计算机程序执行过程时被包含在目标文件中。在编译过程中将静态库与应用程序的对象结合,以形成一个执行文件。相反地,动态库将各种程序共同所需的函数从应用程序中分离,并且仅当在运行期间被调用时将该函数加载至存储器。由于在编译过程中将静态库与应用程序的对象结合,因此执行文件的大小由于用程序包含大量的静态库而增加。当同时执行多个使用相同静态库的应用程序时,各自相同的代码会被加载至存储器中,且因此难以高效地利用存储器。然而,当使用动态库时,由于多个应用程序共享并使用一个动态库,因此能够高效地利用存储器。
因其执行程序的核心功能而需要受到保护的程序代码被多个程序共用,并且在多数情况下将其编制成动态库。在这种情况下,对动态库的安全保护是必要的,并且这成为如何安全地执行动态库而不将应用程序的内部信息暴露于外部的问题。特别地,当使用诸如调试工具(debugger)或交互式反编译工具(IDA)等静态分析工具时,可以对动态库进行分析,使得可以改变其内容或者可以插入新函数。当使用诸如IDA等工具时,甚至可以将机器代码分析成源代码的水平。
在现有技术中,为了保护动态库不被静态分析工具分析,使用如下方法:对动态库加密,将加密动态库添加至程序的资源中,在程序的资源中存储加密动态库,在必要的时间点对加密动态库解密,将解密动态库存储为文件的形式,在将该文件加载至存储器中后使用该文件,并删除该文件。将参照图2详细说明用于保护动态库的现有技术。
然而,用于保护动态库的传统方法能够对动态库加密以避免动态库被静态分析工具分析,但是由于动态库被暴露于外部,因此这容易地显示出该动态库为重要文件。另外,当解密动态库被泄露时,由于解密过程被破坏,因此存在有如下问题:当加载该解密动态库时,仅通过修改相对较小代码就可以绕过(bypass)动态库。因此,现有技术不是能够通过保护动态库不被静态分析工具分析来解决该问题的根本方式。
发明内容
技术问题
本发明的各实施例旨在提供一种保护用于执行程序的核心功能的动态库不被静态分析工具分析的方法。
技术方案
根据本实施例的一个方面,在保护动态库的方法中,该方法可包括:将使用所述动态库的应用程序加载至主存储器中;将安保动态库加载至所述主存储器中;通过对被存储在所述安保动态库中的加密动态库进行解密来生成待保护动态库;并且通过所述应用程序来调用所述待保护动态库中包含的特定模块。
根据本实施例的另一方面,在保护动态库的装置中,该装置可包括:辅助存储装置,其用于存储应用程序和所述动态库;主存储器,其连接至所述辅助存储装置,其中,所述应用程序和所述动态库被加载至所述主存储器中;动态库生成单元,其用于通过对被加载至所述主存储器中的安保动态库中存储的加密动态库进行解密来生成待保护动态库;以及动态库调用单元,其用于通过所述应用程序来调用所述待保护动态库中包含的特定模块。
技术效果
如上所述,根据本发明的实施例,对动态库进行加密,由此安全地保护负责程序的核心功能的动态库不被静态分析工具分析。根据本发明的实施例,由于将负责程序的核心功能且需要保护的待保护动态库存储在负责安全性的安保动态库中,因此未将待保护动态库暴露于外部,从而防止程序被攻击,并且由于以加密状态将待保护动态库进行存储,因此无法使用静态分析工具来分析待保护动态库,由此保证了待保护动态库的安全性。安保动态库包含安全逻辑。安全逻辑包含如下函数:当将安保动态库加载至存储器时,自动地执行该函数以检测攻击者的攻击,或者该函数预先对环境进行配置,使得攻击者无法进行攻击。
另外,根据本发明的实施例,为了增强待保护动态库和安保动态库之间的安全性,通过单独编制地静态库将待保护动态库和安保动态库彼此连接,从而不允许在没有安保动态库的情况下驱动待保护动态库,由此增强了用于提供核心功能的待保护动态库的安全性。安保动态库包含安全逻辑,为了待保护动态库或应用程序的安全性,将该安全逻辑加载存储器中,并接着自动地执行该安全逻辑以运行诸如反调试或反转储(anti-dump)等用于检测或避免攻击者的攻击的安全性函数。即使当待保护动态库被静态分析工具分析并因此被修改时,可以通过文件的完整性验证来确定文件是否被修改,并且当文件被修改时,可以终止应用程序的执行。
附图说明
图1为示出了用于执行包含动态库的程序的计算装置的示例图;
图2为示出了用于保护动态库的方法的示例图;
图3A为示出了根据本实施例的将应用程序和安保动态库加载至主存储器中的状态的示例图;
图3B为示出了根据本实施例的将应用程序、安保动态库和待保护动态库加载至主存储器中的状态的示例图;
图4为示出了根据本实施例的应用程序和动态库之间的连接关系的示例图;
图5为示出了根据本实施例的将应用程序、安保动态库、待保护动态库、伪动态库和散列注册表加载至主存储器中的状态的示例图;
图6为示出了根据本实施例的通过应用程序来调用待保护动态库内的特定模块的处理的流程图;
图7为示出了根据本实施例的提供安全保护以保护动态库不被静态分析工具分析的处理的示例图;并且
图8为示出了根据本实施例的用于保护动态库不被静态分析工具分析的装置的框图。
具体实施方式
在下文中,将参照附图对本发明的实施例进行详细地说明。
用于实施根据本实施例的保护动态库不被静态分析工具分析的方法的系统包括诸如Windows、MACOS、Linux、Unix、IOS、Android、Unity、其它支持动态库的操作系统(OS)以及虚拟机等平台,但是其并不局限于任何一种系统。这里,动态库可以是指诸如动态链接库、共享库、运行时间库、ActiveX控件等各种名称。
图1为示出了用于执行包含动态库的程序的计算装置100的示例图。
被存储在辅助存储装置130中的应用程序被加载至主存储器120中,并且中央处理装置110执行该应用程序。应用程序从输入装置150接收用于执行所需的数据,并且将执行的结果输出至显示装置140。被加载至主存储器120中的应用程序将由此所需的动态库从辅助存储装置130加载至主存储器120中,并接着使用所加载的动态库。此时,在主存储器120上运行的其它应用程序和将动态库加载至主存储器120中的应用程序均可以使用所加载的动态库。多个应用程序使用被加载至主存储器120中的一个动态库,以减少主存储器120的物理使用率,由此实现高效的存储器管理。当因在动态库中出现错误而需要补丁时,仅将动态库改写并分发而无需考虑使用该动态库的各应用程序。当使用静态库时,应当将使用静态库的所有应用程序改写并重新分发。另外,当需要改变动态库中包含的函数时,在仅修改了动态库的情况下就可以应用这些应用程序而无需改变它们自身,由此降低了维护成本。
图2为示出了用于保护动态库的方法的示例图。
被存储在辅助存储装置130中的应用程序210和资源型加密动态库220被加载至主存储器120中。由于加密动态库是负责应用程序的核心功能的待保护动态库,因此需要受到保护。为了通过应用程序210或通过由应用程序使用的动态库来调用待保护动态库中包含的特定模块,应当对加密动态库220进行解密,动态库230应当以文件的形式被存储在辅助存储装置130中,并且动态库230应当被加载至主存储器120中。在将待保护动态库被加载至主存储器120中之后,应用程序210或动态库可以调用特定函数。
传统方法将动态库与应用程序分离,对动态库进行加密,将加密动态库转换为资源,存储该资源,并且当应用程序需要动态库时对加密动态库进行解密,虽然该传统方法可以防止动态库被静态分析工具分析,但是动态库可以很容易地被试图恶意攻击程序的人发觉,并且因此该方法自身不足以保护动态库。存在的安全性问题在于,当试图恶意攻击程序的人破坏负责解密并加载动态库的应用程序的一部分,并修改并加载解密动态库文件,那么应用程序别无选择只能被执行。
图3A为示出了根据本实施例的将应用程序和安保动态库加载至主存储器中的状态的示例图。
当应用程序310被加载至主存储器120中并接着被执行时,待保护动态库内的特定模块被调用。此时,安保动态库320被加载至主存储器120中。图3A示出了如下状态:安保动态库320在其内部将需要安全保证的动态库存储为加密动态库330的形式,并且包含安全逻辑335以用于保护程序免受外部攻击者攻击。待保护动态库在安保动态库320中被存储为加密动态库330的形式,使得待保护动态库能够对试图恶意攻击或使用静态分析工具分析程序的人来说是隐藏的。因此,可以解决现有技术中的因待保护动态库暴露于外部而出现的问题。在安保动态库320被加载至主存储器120中之后,安全逻辑335即刻被自动地执行,并接着与反调试(anti-dubugging)或反转储(anti-dump)一起预先构造其中能够检测到对应用程序或动态库的攻击或使得无法进行攻击的环境。
图3B为示出了根据本实施例的将应用程序、安保动态库和待保护动态库加载至主存储器中的状态的示例图。
图3B示出了如下状态:随着图3A中的应用程序310和安保动态库320被加载至主存储器120中,安保动态库320内的加密动态库330被解密,待保护动态库340以文件的形式被存储在辅助存储装置130中,并接着待保护动态库340被加载至主存储器120中。在待保护动态库340被加载至主存储器120中之后,可以将文件从辅助存储装置130中删除,使得待保护动态库340不会被暴露给试图使用静态分析工具来分析程序的人。
待保护动态库340包含安全性增强静态库342,以进一步增强安全性。安全性增强静态库342预先被编制成静态库的形式,并且当待保护动态库340被编制时,安全性增强静态库342静态地链接至待保护动态库340,且动态地链接至安保动态库320。以此方式,当各库彼此连接时,待保护动态库340调用安全性增强静态库342内的至少一个函数,并且安全性增强静态库342调用安保动态库320内的至少一个函数,使得不能在没有安保动态库320的情况下使用待保护动态库340,并因此进一步增强了安全性。图4示出了各库之间的连接。
另外,可以预先编制并使用安全性增强静态库342,并因此安全性增强静态库的代码可被模糊处理,由此使得难以使用静态分析工具进行反向工程分析(reverseengineering analysis)。这防止了对安全性增强静态库342的角色进行分析,以保护待保护动态库340免受试图恶意分析程序的人的攻击。
图4为示出了根据本实施例的应用程序和动态库之间的连接关系的示例图。
图3B示出了将应用程序310和动态库加载至主存储器120中的示例,且图4示出了应用程序310、待保护动态库340、安全性增强静态库342和安保动态库320之间的连接关系。为了使应用程序310调用待保护动态库340内的特定函数,安保动态库320被动态地加载至主存储器120中,并且安保动态库320对其内存储的加密动态库进行解密,并将解密动态库以文件的形式存储在辅助存储装置130中。
应用程序310或安保动态库320将被存储在辅助存储装置130中的待保护动态库340动态地加载至主存储器120中。此时,被静态地链接在待保护动态库340中的安全性增强静态库342内的至少一个函数被调用,并且安保动态库320内的至少一个函数被安全性增强静态库342调用,因此无法在没有安保动态库320的情况下使用待保护动态库340。即,待保护动态库340调用安全性增强静态库342内的函数,并且所调用的函数再次调用安保动态库320,由此能够识别出安保动态库320首先被加载至主存储器120中。由于安保动态库320在被加载至主存储器120中之后即刻执行安全性函数,因此该识别过程用于保证已配置安全性函数。
图5为示出了根据本实施例的将应用程序、安保动态库、待保护动态库、伪动态库和散列注册表加载至主存储器中的状态的示例图。
图5示出了如下状态:伪动态库510和散列注册表520被额外地加载至主存储器120中,且同时应用程序310、安保动态库320以及要求安全性的待保护动态库340被加载至主存储器120中。使用与待保护动态库相同的名称来编写伪动态库510,以便对试图恶意地攻击应用程序的人来伪装如下事实:待保护动态库340以加密的状态被存储在安保动态库320中。因此,攻击者会将伪动态库510识别为用于执行程序的核心功能的动态库。与安保动态库320相似,伪动态库510可以包含安全逻辑,并且可以模糊处理伪动态库510的代码。
散列注册表520包含每个文件的散列码,这些散列码是通过将应用程序310、安保动态库320、要求安全性的待保护动态库340、伪动态库510和由应用程序使用的文件输入至散列函数中提取的。虽然应用程序310、安保动态库320以及要求安全性的待保护动态库340的散列码是必要的,但是仅在伪动态库510等被加载至主存储器时才选择性地要求伪动态库510等的散列码。散列注册表520可以被分离地存储,且可以如图5的示例被加载至主存储器120中,并且也可以被包含或存储在应用程序310或动态库中。
在下文中,将说明用于验证文件完整性的方法。在应用程序310调用待保护动态库340的特定函数的情况下,如果安保动态库320被加载至主存储器120中,那么安全性函数被执行,待保护动态库被生成并被存储在辅助存储装置130中,并且待保护动态库340、伪动态库510和散列注册表520被加载至主存储器120中。用于验证完整性的文件不局限于安保动态库320,并且可以为应用程序310、待保护动态库340和伪动态库510中的任意一者。经过完整性验证的文件不局限于待保护动态库340,并且可以为应用程序310、安保动态库320和伪动态库510。即使通过静态分析工具对应用程序进行分析,并因此被修改的待保护动态库340被加载至主存储器中,也能够通过验证文件的完整性来避免对安全性造成破坏。为了验证文件的完整性,通过将待验证的文件输入至散列函数(MD5、SHA、Checksum等)中来提取散列码,确定所提取的散列码是否与散列注册表中包含的散列码的任一者相匹配,并且当确定不存在匹配的散列码时,终止应用程序310的执行。
图6为示出了通过应用程序来调用待保护动态库内的特定模块的处理的流程图。
在执行应用程序310时,将应用程序310加载至主存储器120中(S610)。当在执行应用程序310期间调用待保护动态库340内的特定模块时,首先将安保动态库320从辅助存储装置130加载至主存储器120中(S620),激活安保动态库320的安全性函数,通过对被存储在安保动态库320中的加密动态库进行解密来生成待保护动态库340(S630),并且当将生成的待保护动态库340以文件的形式存储在辅助存储装置130中时,通过安保动态库320或应用程序310来验证文件的完整性(S640)。当在文件的完整性验证中识别出文件未被修改时,加载待保护动态库(S650)。当识别出文件被修改时,终止程序的执行。另外,将相对于试图恶意攻击程序的人被伪装成待保护动态库340的伪动态库510加载至主存储器120中(S660)。另外,应用程序310调用待保护动态库340的特定模块(S670),该特定模块负责用于执行应用程序的核心功能。
图7为示出了提供安全性以保护动态库不被静态分析工具分析的处理的示例图。
在开发步骤中,开发作为安保动态库320的Hardening.so、作为待保护动态库340的Game.so和作为安全性增强静态库342以用于增强安保动态库320和待保护动态库340之间的安全性的SDK.a。Game.so和SDK.a静态地彼此连接,并且Game.so包含SDK.a。通过用于增强这些文件的安全性的动态库安全性增强步骤,对包含SDK.a的Game.so进行加密,并将其存储在Hardening.so中。
将用于解密Game.so的加密密钥存储在Hardening.so中。然而,本发明的技术概念并不局限于将加密密钥存储在Hardening.so中,并且可以将加密密钥存储在其它地方。
为了隐藏Game.so文件被加密在Hardening.so中,使用作为具有相同名称的伪动态库510的Game’.so(虽然Game’.so与Game.so的名称相同,但是为了说明将这两个名称区别地书写)。将应用程序和应用有安全性的Hardening.so和Game’.so分发给使用者。
使用者执行分发的应用程序,首先将Hardening.so加载至主存储器中以调用Game.so中包含的特定模块,对被加密并存储在Hardening.so中的Game.so进行解密,并将Game.so加载至主存储器中。在将Game.so加载至主存储器之后,删除Game.so文件,并将作为伪动态库以用于保护Game.so的Game’.so加载至主存储器中。
图8为示出根据本实施例的保护动态库不被静态分析工具分析的装置的框图。
辅助存储装置130可以包含执行诸如应用程序310、安保动态库320和伪动态库510等应用程序所需要的文件。图8示出了将被存储在辅助存储装置130中的应用程序310、安保动态库320和伪动态库510加载至主存储器120中的示例。应用程序310和安保动态库320是必须被包含的,但是伪动态库510可以是选择性地被包含的。应用程序310通过动态库调用单元810调用要求安全性的动态库。在调用之前,动态库生成单元820根据安保动态库320生成待保护动态库340,并且将生成的待保护动态库存储至动态库存储单元830中。
安全性增强单元840动态地链接至被存储在动态库存储单元830中的待保护动态库,并静态地链接至安保动态库320,从而不允许在没有安保动态库320的情况下操作待保护动态库340。
完整性验证单元850包含文件散列提取单元852、散列注册表存储单元854和文件修改确定单元856。完整性验证单元850的文件散列提取单元852通过将被存储在动态库830中的应用程序310、安保动态库320、待保护动态库340以及用于执行其它应用程序所需要的文件输入至散列函数中来提取每个文件的散列码。虽然应用程序310、安保动态库320和要求安全性的待保护动态库340的散列码是必要的,但是仅当伪动态库510等被加载至主存储器时才选择性地需要伪动态库510等的散列码。文件修改确定单元856确定所提取的散列码是否与散列注册表存储单元854中存储的散列注册表的散列码的任一者相匹配,并且当确定不存在匹配的散列码时,终止应用程序的执行。
根据本发明的实施例的用于保护动态库不被静态分析工具分析的装置800可以是诸如个人计算机(PC)、笔记本计算机、平板电脑、个人数字助理(PDA)、游戏主控台、便携式多媒体播放器(PMP)、便携式游戏机(PSP)、无线通信终端、智能电话、TV和媒体播放器等用户终端。根据本发明的实施例的保护动态库不被静态分析工具分析的装置800可以是诸如应用服务器和服务服务器(service server)等服务器终端。根据本发明的实施例的保护动态库不被静态分析工具分析的装置800可以分别指代如下各种装置:(i)设置有诸如用于与各种装置或有线/无线通信网络进行通信的通信调制解调器等通信器件的装置、(ii)设置有用于存储数据以执行程序的存储器的装置和(iii)设置有通过执行程序来进行计算和控制的微处理器的装置等。根据至少一个实施例,存储器可以为诸如随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、光盘、磁盘、固态硬盘(SSD)等计算机可读记录/存储介质。根据至少一个实施例,可以对微处理器进行编程以选择性地执行本文说明的操作和功能中的至少一者。根据至少一个实施例,通过使用诸如特定构造的专用集成电路(ASIC)等硬件,微处理器可以在所述硬件的整体或部分上实施。
上面的说明仅是为了通过示例的方式来说明实施例的技术概念。实施例的领域中的技术人员可以在不偏离本发明原理的情况下做出各种修改、添加和替换。因此,各实施例是旨在说明而非限制本实施例的技术范围。实施例的技术概念的范围不受各实施例的限制。实施例的范围将由随附的权利要求来说明。所有这样的修改和变型将被认为落入本实施例的范围之内。
Claims (15)
1.一种保护动态库的方法,所述方法包括:
将使用所述动态库的应用程序加载至主存储器中;
将安保动态库加载至所述主存储器中;
通过对被存储在所述安保动态库中的加密动态库进行解密来生成待保护动态库;并且
通过所述应用程序来调用所述待保护动态库中包含的特定模块,
其中,所述安保动态库动态地链接至安全性增强静态库,并且所述待保护动态库静态地链接至所述安全性增强静态库。
2.根据权利要求1所述的方法,其中,生成所述待保护动态库的步骤进一步包括:
以文件的形式将所述待保护动态库存储至存储装置中;并且
将所述待保护动态库加载至所述主存储器中。
3.根据权利要求1所述的方法,其中,所述安全性增强静态库调用所述安保动态库内的至少一个模块。
4.根据权利要求1所述的方法,其中,所述待保护动态库调用所述安全性增强静态库内的至少一个模块。
5.根据权利要求1所述的方法,其中,所述安全性增强静态库的代码被模糊处理。
6.根据权利要求1所述的方法,其中,所述安保动态库包括安全逻辑,所述安全逻辑检测对所述应用程序或所述待保护动态库的攻击,或者与反调试或反转储一起构造反攻击环境。
7.根据权利要求1所述的方法,其中,所述应用程序包括伪动态库,所述伪动态库的文件名称与所述待保护动态库的文件名称相同。
8.根据权利要求7所述的方法,其进一步包括:
生成散列注册表,所述散列注册表包括所述应用程序的执行所需的文件的每个文件的散列码,所述所需的文件必要地包括所述应用程序、所述安保动态库和所述待保护动态库,并且取决于所述伪动态库是否被加载至所述主存储器中而选择性地包括所述伪动态库。
9.根据权利要求8所述的方法,其进一步包括:
通过使用所述应用程序的执行所需的文件的散列码来验证所述应用程序的执行所需的文件中的一者的完整性;并且
当在验证完整性的步骤中确定一个以上的文件被修改时,终止所述应用程序的执行。
10.根据权利要求9所述的方法,其中,验证完整性的步骤是由所述安保动态库执行的。
11.一种保护动态库的装置,所述装置包括:
辅助存储装置,其用于存储应用程序和所述动态库;
主存储器,其连接至所述辅助存储装置,其中,所述应用程序和所述动态库被加载至所述主存储器中;
动态库生成单元,其用于通过对被加载至所述主存储器中的安保动态库中存储的加密动态库进行解密来生成待保护动态库;
动态库调用单元,其用于通过所述应用程序来调用所述待保护动态库中包含的特定模块;
安全性增强单元,其用于将所述安保动态库动态地链接至安全性增强静态库,并将所述待保护动态库静态地链接至所述安全性增强静态库。
12.根据权利要求11所述的装置,其中,所述动态库生成单元进一步包括:
动态库存储单元,其用于存储所述待保护动态库。
13.根据权利要求11所述的装置,其中,所述应用程序包括伪动态库,所述伪动态库的文件名称与所述待保护动态库的文件名称相同。
14.根据权利要求13所述的装置,其进一步包括:
完整性验证单元,其用于通过使用文件散列来验证所述应用程序的执行所需的文件的完整性,所述所需的文件必要地包括所述应用程序、所述安保动态库和所述待保护动态库,并且取决于所述伪动态库是否被加载至所述主存储器中而选择性地包括所述伪动态库。
15.根据权利要求14所述的装置,其中所述完整性验证单元包括:
散列注册表存储单元,其用于存储散列注册表,所述散列注册表包括所述应用程序的执行所需的文件的每个文件的散列码;
文件散列提取单元,其用于提取所述应用程序的执行所需的文件的每个文件的散列码;以及
文件修改确定单元,其用于确定所提取的散列码是否与所述散列注册表的散列码中的任一者相匹配,并且当确定不存在匹配的散列码时,终止所述应用程序的执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2013-0120845 | 2013-10-10 | ||
KR20130120845A KR101503785B1 (ko) | 2013-10-10 | 2013-10-10 | 동적 라이브러리를 보호하는 방법 및 장치 |
PCT/KR2014/009307 WO2015053509A1 (ko) | 2013-10-10 | 2014-10-02 | 동적 라이브러리를 보호하는 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105683990A CN105683990A (zh) | 2016-06-15 |
CN105683990B true CN105683990B (zh) | 2018-11-09 |
Family
ID=52813287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480058818.7A Active CN105683990B (zh) | 2013-10-10 | 2014-10-02 | 用于保护动态库的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20160275019A1 (zh) |
JP (1) | JP6227772B2 (zh) |
KR (1) | KR101503785B1 (zh) |
CN (1) | CN105683990B (zh) |
WO (1) | WO2015053509A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845169B (zh) * | 2016-12-26 | 2023-04-07 | 北京握奇智能科技有限公司 | 一种Jar包加固方法及系统 |
KR102705484B1 (ko) * | 2017-01-03 | 2024-09-11 | 삼성에스디에스 주식회사 | 애플리케이션 변환 장치 및 방법 |
CN108418776B (zh) * | 2017-02-09 | 2021-08-20 | 上海诺基亚贝尔股份有限公司 | 用于提供安全业务的方法和设备 |
CN107196907B (zh) * | 2017-03-31 | 2018-08-03 | 武汉斗鱼网络科技有限公司 | 一种安卓so文件的保护方法及装置 |
KR102488149B1 (ko) * | 2018-01-08 | 2023-01-16 | 삼성전자주식회사 | 디스플레이장치 및 그 제어방법 |
CN108446552A (zh) * | 2018-03-13 | 2018-08-24 | 山东超越数控电子股份有限公司 | 一种国产操作系统平台下的软件安全性的实现方法 |
WO2019235663A1 (ko) * | 2018-06-08 | 2019-12-12 | 라인플러스 주식회사 | 네이티브 라이브러리를 보호하는 방법 및 시스템 |
CN109635522A (zh) * | 2018-11-13 | 2019-04-16 | 许继集团有限公司 | 一种动态库的防篡改方法及装置 |
CN112214250B (zh) * | 2019-06-24 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 一种应用程序组件的加载方法和装置 |
CN110673850A (zh) * | 2019-08-28 | 2020-01-10 | 五八有限公司 | 一种获取静态库的大小的方法及装置 |
WO2021044578A1 (ja) * | 2019-09-05 | 2021-03-11 | 三菱電機株式会社 | 情報処理装置、情報処理方法、及び情報処理プログラム |
CN111046377B (zh) * | 2019-12-25 | 2023-11-14 | 五八同城信息技术有限公司 | 加载动态链接库的方法、装置、电子设备及存储介质 |
CN112380503B (zh) * | 2021-01-14 | 2021-04-30 | 北京东方通软件有限公司 | 一种保护核心程序及内存的方法 |
CN113177222A (zh) * | 2021-05-28 | 2021-07-27 | 沈阳美行科技有限公司 | 一种动态库处理方法、装置、电子设备及存储介质 |
CN113535278B (zh) * | 2021-06-15 | 2024-10-18 | 深圳市元征科技股份有限公司 | 动态库调用方法、装置、电子设备及存储介质 |
CN113742659B (zh) * | 2021-08-09 | 2024-08-27 | 航天信息股份有限公司 | 一种应用程序防护方法、装置、电子设备和存储介质 |
US20230102514A1 (en) * | 2021-09-24 | 2023-03-30 | Sap Se | Container plugin for legacy on-premise application |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051200B1 (en) * | 2000-06-27 | 2006-05-23 | Microsoft Corporation | System and method for interfacing a software process to secure repositories |
CN101032115A (zh) * | 2004-09-20 | 2007-09-05 | 皇家飞利浦电子股份有限公司 | 用随机函数共享秘密 |
KR20110064458A (ko) * | 2009-12-08 | 2011-06-15 | 한국전자통신연구원 | 암호화된 동적 라이브러리를 이용한 안전한 응용 프로그램 실행 장치 및 방법 |
KR20120014673A (ko) * | 2010-08-10 | 2012-02-20 | 주식회사 잉카인터넷 | 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법 |
WO2012129639A2 (en) * | 2011-03-31 | 2012-10-04 | Irdeto Canada Corporation | Method of securing non-native code |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7539875B1 (en) * | 2000-06-27 | 2009-05-26 | Microsoft Corporation | Secure repository with layers of tamper resistance and system and method for providing same |
US20020066022A1 (en) * | 2000-11-29 | 2002-05-30 | Brad Calder | System and method for securing an application for execution on a computer |
US7515717B2 (en) * | 2003-07-31 | 2009-04-07 | International Business Machines Corporation | Security containers for document components |
US20050160414A1 (en) * | 2004-01-21 | 2005-07-21 | Nokia Corporation | System and method for dynamically adding features to software applications |
KR101203245B1 (ko) * | 2004-06-12 | 2012-11-20 | 마이크로소프트 코포레이션 | 소프트웨어 보안 |
US7584509B2 (en) * | 2004-06-12 | 2009-09-01 | Microsoft Corporation | Inhibiting software tampering |
US7730472B2 (en) * | 2004-09-24 | 2010-06-01 | Hewlett-Packard Development Company, L.P. | Dynamic linking of modules in a pre-operating system environment |
US7814471B2 (en) * | 2004-12-16 | 2010-10-12 | Microsoft Corporation | Method and apparatus for providing DLL compatibility |
JP2007164595A (ja) * | 2005-12-15 | 2007-06-28 | Toshiba Corp | コンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリ |
US7913092B1 (en) * | 2005-12-29 | 2011-03-22 | At&T Intellectual Property Ii, L.P. | System and method for enforcing application security policies using authenticated system calls |
US8495383B2 (en) * | 2006-12-14 | 2013-07-23 | Nokia Corporation | Method for the secure storing of program state data in an electronic device |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
JP2008234248A (ja) * | 2007-03-20 | 2008-10-02 | Mitsubishi Electric Corp | プログラム実行装置及びプログラム実行方法 |
KR20090040684A (ko) * | 2007-10-22 | 2009-04-27 | 삼성전자주식회사 | 동적 링크 라이브러리 파일 및 그 사용방법 |
US8312249B1 (en) * | 2008-10-10 | 2012-11-13 | Apple Inc. | Dynamic trampoline and structured code generation in a signed code environment |
EP2477110A1 (en) * | 2011-01-14 | 2012-07-18 | Wibu-Systems AG | Method for protecting an application program against reverse engineering and related computer program product |
JP2012185535A (ja) * | 2011-03-03 | 2012-09-27 | Mitsubishi Electric Corp | コンピュータシステム |
US8516273B2 (en) * | 2011-05-31 | 2013-08-20 | Asobe Systems Incorporated | Porting digital rights management service to multiple computing platforms |
CN102360412B (zh) * | 2011-09-26 | 2014-07-02 | 飞天诚信科技股份有限公司 | Java源代码的保护方法和系统 |
RU2514141C1 (ru) * | 2012-09-28 | 2014-04-27 | Закрытое акционерное общество "Лаборатория Касперского" | Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции |
-
2013
- 2013-10-10 KR KR20130120845A patent/KR101503785B1/ko active IP Right Grant
-
2014
- 2014-10-02 CN CN201480058818.7A patent/CN105683990B/zh active Active
- 2014-10-02 WO PCT/KR2014/009307 patent/WO2015053509A1/ko active Application Filing
- 2014-10-02 JP JP2016521281A patent/JP6227772B2/ja active Active
- 2014-10-02 US US15/027,867 patent/US20160275019A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051200B1 (en) * | 2000-06-27 | 2006-05-23 | Microsoft Corporation | System and method for interfacing a software process to secure repositories |
CN101032115A (zh) * | 2004-09-20 | 2007-09-05 | 皇家飞利浦电子股份有限公司 | 用随机函数共享秘密 |
KR20110064458A (ko) * | 2009-12-08 | 2011-06-15 | 한국전자통신연구원 | 암호화된 동적 라이브러리를 이용한 안전한 응용 프로그램 실행 장치 및 방법 |
KR20120014673A (ko) * | 2010-08-10 | 2012-02-20 | 주식회사 잉카인터넷 | 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법 |
WO2012129639A2 (en) * | 2011-03-31 | 2012-10-04 | Irdeto Canada Corporation | Method of securing non-native code |
Also Published As
Publication number | Publication date |
---|---|
US20160275019A1 (en) | 2016-09-22 |
KR101503785B1 (ko) | 2015-03-18 |
CN105683990A (zh) | 2016-06-15 |
JP6227772B2 (ja) | 2017-11-08 |
WO2015053509A1 (ko) | 2015-04-16 |
JP2016540282A (ja) | 2016-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
CN101908119B (zh) | 一种动态链接库dll文件的处理方法和装置 | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
CN106778103A (zh) | 一种安卓应用程序防逆向破解的加固方法、系统及解密方法 | |
CN106326694A (zh) | 一种基于C源代码的混淆的Android应用加固方法 | |
CN108399319B (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
EP3127034A1 (en) | Software protection | |
CN104268444A (zh) | 一种云OS Java源代码保护方法 | |
CN105446713A (zh) | 安全存储方法及设备 | |
WO2015023093A1 (ko) | 해시를 이용한 동적코드의 무결성 검증 방법 | |
WO2016024838A1 (ko) | 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템 | |
CN112231702B (zh) | 应用保护方法、装置、设备及介质 | |
CN103413073A (zh) | 一种保护java可执行程序的方法及设备 | |
CN103617401A (zh) | 一种数据文件保护方法及装置 | |
CN103413075A (zh) | 一种通过虚拟机保护java可执行程序的方法及设备 | |
CN112269970A (zh) | 一种脚本加密方法、装置、服务器及存储介质 | |
CN109241707A (zh) | 应用程序的混淆方法、装置和服务器 | |
CN107430650A (zh) | 保护计算机程序以抵御逆向工程 | |
CN104504310A (zh) | 基于壳技术的软件保护方法和装置 | |
CN108021790B (zh) | 文件保护方法、装置、计算设备及计算机存储介质 | |
CN113836582A (zh) | 软件加密及解密方法、装置、电子设备和存储介质 | |
DONG et al. | Sesoa: Security enhancement system with online authentication for android apk | |
JP6215468B2 (ja) | プログラム保護装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |