CN105683990B - 用于保护动态库的方法和装置 - Google Patents

用于保护动态库的方法和装置 Download PDF

Info

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
Application number
CN201480058818.7A
Other languages
English (en)
Other versions
CN105683990A (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.)
Inka Entworks Inc
Original Assignee
Inka Entworks 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
Priority to KR20130120845A priority Critical patent/KR101503785B1/ko
Priority to KR10-2013-0120845 priority
Application filed by Inka Entworks Inc filed Critical Inka Entworks Inc
Priority to PCT/KR2014/009307 priority patent/WO2015053509A1/ko
Publication of CN105683990A publication Critical patent/CN105683990A/zh
Application granted granted Critical
Publication of CN105683990B publication Critical patent/CN105683990B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/53Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

本发明公开了一种相对于静态分析工具来保护动态库的方法。用于保护动态库的方法包括:将使用动态库的应用程序加载至主存储器中,其中至少一个动态库是安保动态库;将安保动态库加载至所述主存储器中;动态库建立步骤:通过对被存储在安保动态库中的加密动态库进行解密来生成待保护动态库;并且通过应用程序来调用待保护动态库中包含的特定模块。

Description

用于保护动态库的方法和装置
技术领域
[0001] 本发明涉及一种保护动态库不被分析工具分析和攻击的方法。
背景技术
[0002] 需要指出的是,下面说明的内容仅提供与本发明的各实施例有关的背景信息,且 不构成现有技术。
[0003] 在程序中,库表示预先编制的可反复使用的编译函数。在程序中使用库的原因在 于,函数当被反复使用时可被方便地使用,当函数以库的形式被分发时可以隐藏函数的具 体实现,并且可以根据需要使用预编译函数,从而便于对其进行维护。
[0004] 库被分类为静态库和动态库,静态库在程序编译过程中被包含在应用程序的目标 文件中,而动态库在计算机程序执行过程时被包含在目标文件中。在编译过程中将静态库 与应用程序的对象结合,以形成一个执行文件。相反地,动态库将各种程序共同所需的函数 从应用程序中分离,并且仅当在运行期间被调用时将该函数加载至存储器。由于在编译过 程中将静态库与应用程序的对象结合,因此执行文件的大小由于用程序包含大量的静态库 而增加。当同时执行多个使用相同静态库的应用程序时,各自相同的代码会被加载至存储 器中,且因此难以高效地利用存储器。然而,当使用动态库时,由于多个应用程序共享并使 用一个动态库,因此能够高效地利用存储器。
[0005] 因其执行程序的核心功能而需要受到保护的程序代码被多个程序共用,并且在多 数情况下将其编制成动态库。在这种情况下,对动态库的安全保护是必要的,并且这成为如 何安全地执行动态库而不将应用程序的内部信息暴露于外部的问题。特别地,当使用诸如 调试工具(debugger)或交互式反编译工具(IDA)等静态分析工具时,可以对动态库进行分 析,使得可以改变其内容或者可以插入新函数。当使用诸如IDA等工具时,甚至可以将机器 代码分析成源代码的水平。
[0006] 在现有技术中,为了保护动态库不被静态分析工具分析,使用如下方法:对动态库 加密,将加密动态库添加至程序的资源中,在程序的资源中存储加密动态库,在必要的时间 点对加密动态库解密,将解密动态库存储为文件的形式,在将该文件加载至存储器中后使 用该文件,并删除该文件。将参照图2详细说明用于保护动态库的现有技术。
[0007] 然而,用于保护动态库的传统方法能够对动态库加密以避免动态库被静态分析工 具分析,但是由于动态库被暴露于外部,因此这容易地显示出该动态库为重要文件。另外, 当解密动态库被泄露时,由于解密过程被破坏,因此存在有如下问题:当加载该解密动态库 时,仅通过修改相对较小代码就可以绕过(bypass)动态库。因此,现有技术不是能够通过保 护动态库不被静态分析工具分析来解决该问题的根本方式。
发明内容
[0008] 技术问题
[0009] 本发明的各实施例旨在提供一种保护用于执行程序的核心功能的动态库不被静 态分析工具分析的方法。
[0010] 技术方案
[0011] 根据本实施例的一个方面,在保护动态库的方法中,该方法可包括:将使用所述动 态库的应用程序加载至主存储器中;将安保动态库加载至所述主存储器中;通过对被存储 在所述安保动态库中的加密动态库进行解密来生成待保护动态库;并且通过所述应用程序 来调用所述待保护动态库中包含的特定模块。
[0012] 根据本实施例的另一方面,在保护动态库的装置中,该装置可包括:辅助存储装 置,其用于存储应用程序和所述动态库;主存储器,其连接至所述辅助存储装置,其中,所述 应用程序和所述动态库被加载至所述主存储器中;动态库生成单元,其用于通过对被加载 至所述主存储器中的安保动态库中存储的加密动态库进行解密来生成待保护动态库;以及 动态库调用单元,其用于通过所述应用程序来调用所述待保护动态库中包含的特定模块。 [0013]技术效果
[0014] 如上所述,根据本发明的实施例,对动态库进行加密,由此安全地保护负责程序的 核心功能的动态库不被静态分析工具分析。根据本发明的实施例,由于将负责程序的核心 功能且需要保护的待保护动态库存储在负责安全性的安保动态库中,因此未将待保护动态 库暴露于外部,从而防止程序被攻击,并且由于以加密状态将待保护动态库进行存储,因此 无法使用静态分析工具来分析待保护动态库,由此保证了待保护动态库的安全性。安保动 态库包含安全逻辑。安全逻辑包含如下函数:当将安保动态库加载至存储器时,自动地执行 该函数以检测攻击者的攻击,或者该函数预先对环境进行配置,使得攻击者无法进行攻击。
[0015] 另外,根据本发明的实施例,为了增强待保护动态库和安保动态库之间的安全性, 通过单独编制地静态库将待保护动态库和安保动态库彼此连接,从而不允许在没有安保动 态库的情况下驱动待保护动态库,由此增强了用于提供核心功能的待保护动态库的安全 性。安保动态库包含安全逻辑,为了待保护动态库或应用程序的安全性,将该安全逻辑加载 存储器中,并接着自动地执行该安全逻辑以运行诸如反调试或反转储(anti-dump)等用于 检测或避免攻击者的攻击的安全性函数。即使当待保护动态库被静态分析工具分析并因此 被修改时,可以通过文件的完整性验证来确定文件是否被修改,并且当文件被修改时,可以 终止应用程序的执行。
附图说明
[0016] 图1为示出了用于执行包含动态库的程序的计算装置的示例图;
[0017] 图2为示出了用于保护动态库的方法的示例图;
[0018] 图3A为示出了根据本实施例的将应用程序和安保动态库加载至主存储器中的状 态的示例图;
[0019] 图3B为示出了根据本实施例的将应用程序、安保动态库和待保护动态库加载至主 存储器中的状态的示例图;
[0020] 图4为示出了根据本实施例的应用程序和动态库之间的连接关系的示例图;
[0021] 图5为示出了根据本实施例的将应用程序、安保动态库、待保护动态库、伪动态库 和散列注册表加载至主存储器中的状态的示例图;
[0022] 图6为示出了根据本实施例的通过应用程序来调用待保护动态库内的特定模块的 处理的流程图;
[0023] 图7为示出了根据本实施例的提供安全保护以保护动态库不被静态分析工具分析 的处理的示例图;并且
[0024] 图8为示出了根据本实施例的用于保护动态库不被静态分析工具分析的装置的框 图。
具体实施方式
[0025] 在下文中,将参照附图对本发明的实施例进行详细地说明。
[0026] 用于实施根据本实施例的保护动态库不被静态分析工具分析的方法的系统包括 诸如啊11(1(^3、姒(:08、1^111^、1]1^\、108、人11(11'〇丨〇1、1]11“7、其它支持动态库的操作系统((《)以 及虚拟机等平台,但是其并不局限于任何一种系统。这里,动态库可以是指诸如动态链接 库、共享库、运行时间库、ActiveX控件等各种名称。
[0027] 图1为示出了用于执行包含动态库的程序的计算装置100的示例图。
[0028] 被存储在辅助存储装置130中的应用程序被加载至主存储器120中,并且中央处理 装置110执行该应用程序。应用程序从输入装置150接收用于执行所需的数据,并且将执行 的结果输出至显示装置140。被加载至主存储器120中的应用程序将由此所需的动态库从辅 助存储装置130加载至主存储器120中,并接着使用所加载的动态库。此时,在主存储器120 上运行的其它应用程序和将动态库加载至主存储器120中的应用程序均可以使用所加载的 动态库。多个应用程序使用被加载至主存储器120中的一个动态库,以减少主存储器120的 物理使用率,由此实现高效的存储器管理。当因在动态库中出现错误而需要补丁时,仅将动 态库改写并分发而无需考虑使用该动态库的各应用程序。当使用静态库时,应当将使用静 态库的所有应用程序改写并重新分发。另外,当需要改变动态库中包含的函数时,在仅修改 了动态库的情况下就可以应用这些应用程序而无需改变它们自身,由此降低了维护成本。
[0029] 图2为示出了用于保护动态库的方法的示例图。
[0030] 被存储在辅助存储装置130中的应用程序210和资源型加密动态库220被加载至主 存储器120中。由于加密动态库是负责应用程序的核心功能的待保护动态库,因此需要受到 保护。为了通过应用程序210或通过由应用程序使用的动态库来调用待保护动态库中包含 的特定模块,应当对加密动态库220进行解密,动态库230应当以文件的形式被存储在辅助 存储装置130中,并且动态库230应当被加载至主存储器120中。在将待保护动态库被加载至 主存储器120中之后,应用程序210或动态库可以调用特定函数。
[0031] 传统方法将动态库与应用程序分离,对动态库进行加密,将加密动态库转换为资 源,存储该资源,并且当应用程序需要动态库时对加密动态库进行解密,虽然该传统方法可 以防止动态库被静态分析工具分析,但是动态库可以很容易地被试图恶意攻击程序的人发 觉,并且因此该方法自身不足以保护动态库。存在的安全性问题在于,当试图恶意攻击程序 的人破坏负责解密并加载动态库的应用程序的一部分,并修改并加载解密动态库文件,那 么应用程序别无选择只能被执行。
[0032]图3A为示出了根据本实施例的将应用程序和安保动态库加载至主存储器中的状 态的示例图。
[0033]当应用程序310被加载至主存储器120中并接着被执行时,待保护动态库内的特定 模块被调用。此时,安保动态库320被加载至主存储器120中。图3A示出了如下状态:安保动 态库320在其内部将需要安全保证的动态库存储为加密动态库330的形式,并且包含安全逻 辑335以用于保护程序免受外部攻击者攻击。待保护动态库在安保动态库320中被存储为加 密动态库330的形式,使得待保护动态库能够对试图恶意攻击或使用静态分析工具分析程 序的人来说是隐藏的。因此,可以解决现有技术中的因待保护动态库暴露于外部而出现的 问题。在安保动态库320被加载至主存储器120中之后,安全逻辑335即刻被自动地执行,并 接着与反调试(anti-dubugging)或反转储(anti-dump) —起预先构造其中能够检测到对应 用程序或动态库的攻击或使得无法进行攻击的环境。
[0034]图3B为示出了根据本实施例的将应用程序、安保动态库和待保护动态库加载至主 存储器中的状态的示例图。
[0035] 图3B示出了如下状态:随着图3A中的应用程序310和安保动态库320被加载至主存 储器120中,安保动态库320内的加密动态库330被解密,待保护动态库340以文件的形式被 存储在辅助存储装置130中,并接着待保护动态库340被加载至主存储器120中。在待保护动 态库340被加载至主存储器120中之后,可以将文件从辅助存储装置130中删除,使得待保护 动态库340不会被暴露给试图使用静态分析工具来分析程序的人。
[0036] 待保护动态库340包含安全性增强静态库342,以进一步增强安全性。安全性增强 静态库342预先被编制成静态库的形式,并且当待保护动态库340被编制时,安全性增强静 态库342静态地链接至待保护动态库340,且动态地链接至安保动态库320。以此方式,当各 库彼此连接时,待保护动态库340调用安全性增强静态库342内的至少一个函数,并且安全 性增强静态库342调用安保动态库320内的至少一个函数,使得不能在没有安保动态库32〇 的情况下使用待保护动态库340,并因此进一步增强了安全性。图4示出了各库之间的连接。
[0037] 另外,可以预先编制并使用安全性增强静态库342,并因此安全性增强静态库的代 码可被模糊处理,由此使得难以使用静态分析工具进行反向工程分析(reverse engineering analysis)。这防止了对安全性增强静态库342的角色进彳了分析,以保护待保 护动态库340免受试图恶意分析程序的人的攻击。
[0038] 图4为示出了根据本实施例的应用程序和动态库之间的连接关系的示例图。
[0039] 图3B示出了将应用程序310和动态库加载至主存储器120中的示例,且图4示出了 应用程序310、待保护动态库340、安全性增强静态库342和安保动态库320之间的连接关系。 为了使应用程序310调用待保护动态库340内的特定函数,安保动态库320被动态地加载至 主存储器120中,并且安保动态库320对其内存储的加密动态库进行解密,并将解密动态库 以文件的形式存储在辅助存储装置130中。
[0040] 应用程序310或安保动态库320将被存储在辅助存储装置130中的待保护动态库 340动态地加载至主存储器120中。此时,被静态地链接在待保护动态库340中的安全性增强 静态库342内的至少一个函数被调用,并且安保动态库32〇内的至少一个函数被安全性增强 静态库342调用,因此无法在没有安保动态库320的情况下使用待保护动态库340。即,待保 护动态库340调用安全性增强静态库342内的函数,并且所调用的函数再次调用安保动态库 320,由此能够识别出安保动态库320首先被加载至主存储器12〇中。由于安保动态库320在 被加载至主存储器120中之后即刻执行安全性函数,因此该识别过程用于保证已配置安全 性函数。
[0041]图5为示出了根据本实施例的将应用程序、安保动态库、待保护动态库、伪动态库 和散列注册表加载至主存储器中的状态的示例图。
[0042]图5示出了如下状态:伪动态库510和散列注册表520被额外地加载至主存储器120 中,且同时应用程序310、安保动态库320以及要求安全性的待保护动态库340被加载至主存 储器120中。使用与待保护动态库相同的名称来编写伪动态库510,以便对试图恶意地攻击 应用程序的人来伪装如下事实:待保护动态库340以加密的状态被存储在安保动态库320 中。因此,攻击者会将伪动态库510识别为用于执行程序的核心功能的动态库。与安保动态 库320相似,伪动态库510可以包含安全逻辑,并且可以模糊处理伪动态库510的代码。
[0043] 散列注册表520包含每个文件的散列码,这些散列码是通过将应用程序310、安保 动态库320、要求安全性的待保护动态库340、伪动态库510和由应用程序使用的文件输入至 散列函数中提取的。虽然应用程序310、安保动态库320以及要求安全性的待保护动态库340 的散列码是必要的,但是仅在伪动态库510等被加载至主存储器时才选择性地要求伪动态 库510等的散列码。散列注册表520可以被分离地存储,且可以如图5的示例被加载至主存储 器120中,并且也可以被包含或存储在应用程序310或动态库中。
[0044] 在下文中,将说明用于验证文件完整性的方法。在应用程序310调用待保护动态库 340的特定函数的情况下,如果安保动态库320被加载至主存储器120中,那么安全性函数被 执行,待保护动态库被生成并被存储在辅助存储装置130中,并且待保护动态库340、伪动态 库510和散列注册表520被加载至主存储器120中。用于验证完整性的文件不局限于安保动 态库320,并且可以为应用程序310、待保护动态库340和伪动态库510中的任意一者。经过完 整性验证的文件不局限于待保护动态库340,并且可以为应用程序310、安保动态库320和伪 动态库510。即使通过静态分析工具对应用程序进行分析,并因此被修改的待保护动态库 340被加载至主存储器中,也能够通过验证文件的完整性来避免对安全性造成破坏。为了验 证文件的完整性,通过将待验证的文件输入至散列函数(MD5、SHA、CheckSUm等)中来提取散 列码,确定所提取的散列码是否与散列注册表中包含的散列码的任一者相匹配,并且当确 定不存在匹配的散列码时,终止应用程序310的执行。
[0045]图6为示出了通过应用程序来调用待保护动态库内的特定模块的处理的流程图。 [0046] 在执行应用程序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),该特定模块负责用于执行应 用程序的核心功能。
[0047]图7为示出了提供安全性以保护动态库不被静态分析工具分析的处理的示例图。 [0048] 在开发步骤中,开发作为安保动态库320的Hardening, so、作为待保护动态库340 的Game, so和作为安全性增强静态库342以用于增强安保动态库320和待保护动态库340之 间的安全性的SDK. aDGame • so和SDK. a静态地彼此连接,并且Game • so包含SDK • a。通过用于 增强这些文件的安全性的动态库安全性增强步骤,对包含SDK.a的Game, so进行加密,并将 其存储在Hardening, so中。
[0049] 将用于解密Game. so的加密密钥存储在Harden ing.so中。然而,本发明的技术概念 并不局限于将加密密钥存储在Hardening.so中,并且可以将加密密钥存储在其它地方。 [0050] 为了隐藏Game, so文件被加密在Hardening, so中,使用作为具有相同名称的伪动 态库510的Game’ .so (虽然Game’ .so与Game.so的名称相同,但是为了说明将这两个名称区 别地书写)。将应用程序和应用有安全性的Hardening.so和Game’ .so分发给使用者。
[0051] 使用者执行分发的应用程序,首先将Hardening, so加载至主存储器中以调用 Game • so中包含的特定模块,对被加密并存储在Hardening • so中的Game. so进行解密,并将 Game • so加载至主存储器中。在将Game • so加载至主存储器之后,删除Game. so文件,并将作 为伪动态库以用于保护Game .so的Game’ .so加载至主存储器中。
[0052]图8为示出根据本实施例的保护动态库不被静态分析工具分析的装置的框图。 [0053] 辅助存储装置130可以包含执行诸如应用程序310、安保动态库320和伪动态库510 等应用程序所需要的文件。图8示出了将被存储在辅助存储装置130中的应用程序310、安保 动态库320和伪动态库510加载至主存储器120中的示例。应用程序310和安保动态库320是 必须被包含的,但是伪动态库510可以是选择性地被包含的。应用程序310通过动态库调用 单元810调用要求安全性的动态库。在调用之前,动态库生成单元820根据安保动态库320生 成待保护动态库340,并且将生成的待保护动态库存储至动态库存储单元830中。
[0054] 安全性增强单元840动态地链接至被存储在动态库存储单元830中的待保护动态 库,并静态地链接至安保动态库320,从而不允许在没有安保动态库320的情况下操作待保 护动态库340。
[0055]完整性验证单元850包含文件散列提取单元852、散列注册表存储单元854和文件 修改确定单元856。完整性验证单元850的文件散列提取单元852通过将被存储在动态库830 中的应用程序310、安保动态库320、待保护动态库340以及用于执行其它应用程序所需要的 文件输入至散列函数中来提取每个文件的散列码。虽然应用程序310、安保动态库320和要 求安全性的待保护动态库340的散列码是必要的,但是仅当伪动态库510等被加载至主存储 器时才选择性地需要伪动态库510等的散列码。文件修改确定单元856确定所提取的散列码 是否与散列注册表存储单元854中存储的散列注册表的散列码的任一者相匹配,并且当确 定不存在匹配的散列码时,终止应用程序的执行。
[0056] 根据本发明的实施例的用于保护动态库不被静态分析工具分析的装置800可以是 诸如个人计算机(PC)、笔记本计算机、平板电脑、个人数字助理(PDA)、游戏主控台、便携式 多媒体播放器(PMP)、便携式游戏机(PSP)、无线通信终端、智能电话、TV和媒体播放器等用 户终端。根据本发明的实施例的保护动态库不被静态分析工具分析的装置800可以是诸如 应用服务器和服务服务器(service server)等服务器终端。根据本发明的实施例的保护动 态库不被静态分析工具分析的装置8〇〇可以分别指代如下各种装置:(i)设置有诸如用于与 各种装置或有线/无线通信网络进行通信的通信调制解调器等通信器件的装置、(ii)设置 有用于存储数据以执行程序的存储器的装置和(iii)设置有通过执行程序来进行计算和控 制的微处理器的装置等。根据至少一个实施例,存储器可以为诸如随机存取存储器(RAM)、 只读存储器(ROM)、闪速存储器、光盘、磁盘、固态硬盘(SSD)等计算机可读记录/存储介质。 根据至少一个实施例,可以对微处理器进行编程以选择性地执行本文说明的操作和功能中 的至少一者。根据至少一个实施例,通过使用诸如特定构造的专用集成电路(ASIC)等硬件, 微处理器可以在所述硬件的整体或部分上实施。
[0057]上面的说明仅是为了通过示例的方式来说明实施例的技术概念。实施例的领域中 的技术人员可以在不偏离本发明原理的情况下做出各种修改、添加和替换。因此,各实施例 是旨在说明而非限制本实施例的技术范围。实施例的技术概念的范围不受各实施例的限 制。实施例的范围将由随附的权利要求来说明。所有这样的修改和变型将被认为落入本实 施例的范围之内。

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所述的装置,其中所述完整性验证单元包括: 散列注册表存储单元,其用于存储散列注册表,所述散列注册表包括所述应用程序的 执行所需的文件的每个文件的散列码; 文件散列提取单元,其用于提取所述应用程序的执行所需的文件的每个文件的散列 码;以及 文件修改确定单元,其用于确定所提取的散列码是否与所述散列注册表的散列码中的 任一者相匹配,并且当确定不存在匹配的散列码时,终止所述应用程序的执行。
CN201480058818.7A 2013-10-10 2014-10-02 用于保护动态库的方法和装置 Active CN105683990B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR20130120845A KR101503785B1 (ko) 2013-10-10 2013-10-10 동적 라이브러리를 보호하는 방법 및 장치
KR10-2013-0120845 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 (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180079852A (ko) * 2017-01-03 2018-07-11 삼성에스디에스 주식회사 애플리케이션 변환 장치 및 방법
CN108418776B (zh) * 2017-02-09 2021-08-20 上海诺基亚贝尔股份有限公司 用于提供安全业务的方法和设备
CN107196907B (zh) * 2017-03-31 2018-08-03 武汉斗鱼网络科技有限公司 一种安卓so文件的保护方法及装置
KR20190084435A (ko) * 2018-01-08 2019-07-17 삼성전자주식회사 디스플레이장치 및 그 제어방법
CN108446552A (zh) * 2018-03-13 2018-08-24 山东超越数控电子股份有限公司 一种国产操作系统平台下的软件安全性的实现方法
WO2019235663A1 (ko) * 2018-06-08 2019-12-12 라인플러스 주식회사 네이티브 라이브러리를 보호하는 방법 및 시스템
CN109635522A (zh) * 2018-11-13 2019-04-16 许继集团有限公司 一种动态库的防篡改方法及装置
WO2021044578A1 (ja) * 2019-09-05 2021-03-11 三菱電機株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
CN112380503B (zh) * 2021-01-14 2021-04-30 北京东方通软件有限公司 一种保护核心程序及内存的方法

Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US7552337B2 (en) * 2004-06-12 2009-06-23 Microsoft Corporation Service protection
KR101203245B1 (ko) * 2004-06-12 2012-11-20 마이크로소프트 코포레이션 소프트웨어 보안
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 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции

Patent Citations (5)

* Cited by examiner, † Cited by third party
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
WO2015053509A1 (ko) 2015-04-16
JP2016540282A (ja) 2016-12-22
US20160275019A1 (en) 2016-09-22
KR101503785B1 (ko) 2015-03-18
JP6227772B2 (ja) 2017-11-08
CN105683990A (zh) 2016-06-15

Similar Documents

Publication Publication Date Title
CN105683990B (zh) 用于保护动态库的方法和装置
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
CN101908119B (zh) 一种动态链接库dll文件的处理方法和装置
CN103544414B (zh) 一种Android系统应用的深度代码混淆方法
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
CN106326694A (zh) 一种基于C源代码的混淆的Android应用加固方法
CN103617401B (zh) 一种数据文件保护方法及装置
WO2016024838A1 (ko) 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
CN106778103A (zh) 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
CN105446713A (zh) 安全存储方法及设备
EP3127034A1 (en) Software protection
CN107408176A (zh) 恶意对象的执行剖析检测
CN103413073A (zh) 一种保护java可执行程序的方法及设备
CN103413075A (zh) 一种通过虚拟机保护java可执行程序的方法及设备
WO2015023093A1 (ko) 해시를 이용한 동적코드의 무결성 검증 방법
CN104268444A (zh) 一种云OS Java源代码保护方法
CN108399319B (zh) 源代码保护方法、应用服务器及计算机可读存储介质
CN109241707A (zh) 应用程序的混淆方法、装置和服务器
CN107430650A (zh) 保护计算机程序以抵御逆向工程
CN107871066B (zh) 基于安卓系统的代码编译方法及装置
CN104504310A (zh) 基于壳技术的软件保护方法和装置
WO2022078366A1 (zh) 应用保护方法、装置、设备及介质
JP6215468B2 (ja) プログラム保護装置
CN106843853A (zh) 保护用户信息的方法和装置

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