CN109840400B - 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法 - Google Patents
提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法 Download PDFInfo
- Publication number
- CN109840400B CN109840400B CN201810956392.7A CN201810956392A CN109840400B CN 109840400 B CN109840400 B CN 109840400B CN 201810956392 A CN201810956392 A CN 201810956392A CN 109840400 B CN109840400 B CN 109840400B
- Authority
- CN
- China
- Prior art keywords
- intermediate language
- secure
- language library
- library
- file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 65
- 238000000605 extraction Methods 0.000 claims abstract description 9
- 238000013507 mapping Methods 0.000 claims description 7
- 238000005538 encapsulation Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 6
- 238000013515 script Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
Classifications
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/106—Enforcing content protection by specific content processing
- G06F21/1062—Editing
-
- 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
- G06F21/602—Providing cryptographic facilities or services
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Bioethics (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
公开了一种用于提供安全性的设备和方法,以及一种用于执行安全性以保护通用中间语言的设备和方法。一种用于提供安全性的设备,其存储通过组装执行引擎库和中间语言库而生成的执行封装,所述中间语言库通过编译多个文件而生成,所述设备包括:中间语言提取单元,其被配置为从执行封装中提取中间语言库;以及加密单元,其被配置为通过第一加密算法对从中间语言提取单元提取出的中间语言库进行加密并且通过第二加密算法对经加密的中间语言库进行加密来提供安全中间语言库,从而保护通用中间语言免受黑客攻击。
Description
技术领域
本公开涉及提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法,并且更具体地,涉及提供安全性的设备和方法以及针对以脚本语言编写的程序的通用中间语言执行安全性的设备和方法。
背景技术
虽然应用执行相同的任务,但应用应当被单独编程以根据硬件或操作系统进行操作。也就是说,相同的应用,例如,相同的游戏程序可以在诸如PC、Mac、网络浏览器、闪存、安卓(Android)手机和iPhone的各种环境中执行,但是游戏程序的源代码应当根据平台而单独开发。因此,游戏程序的开发和维护成本增加。如果不管硬件或操作系统如何而重复使用一个源代码,则可以显着降低成本。
近来,由于智能手机的出现,重复使用程序的需求进一步增加,并且大多数移动游戏实际上是由诸如反映该特性的游戏引擎的开发工具制造的。代表性的跨平台游戏引擎包括Unity、Havok Vision和COCOS2D,并且特别地,Unity是支持C#、JavaScript和Boo作为制作游戏脚本的语言的跨平台的游戏引擎。
然而,虽然编译了以程序语言C#编写的程序,但程序不被直接转换为机器语言,而是以通用中间语言(CLI)的形式转换为中间语言的二进制代码并且作为具有dll扩展名的文件被包含在游戏数据包中。为了执行通用中间语言代码,需要用于将诸如.NETFramework、mono和JVM的通用中间语言转换为机器语言并且执行该机器语言的装置。
然而,通用中间语言的形式是完全已知的,并且已经提供了用于将通用中间语言完全重构为原始脚本源代码并表达它的工具,使得可以通过逆向工程借助于反向分析来读取重要的游戏逻辑源,并且甚至攻击者很容易通过根据需求修改代码来重建dll并分发破解版本。
当制作C#脚本时,通过应用代码混淆方案改变方法名称或参数名称,可以在一定程度上使得借助于逆向工程进行程序分析更加困难,但是不能根本上消除源代码可以被示出的弱点。
此外,有时会使用制作用于检测对安卓原生开发工具包(NDK)文件进行的黑客攻击并且从Java或C#脚本调用该文件并保护该文件的逻辑的方法,但Java也是被转换为中间语言并且如C#那样执行得语言,使得源代码很容易被泄露和调制,并且因此攻击者可以很容易地使安全逻辑无效。
发明内容
为了解决该问题,本公开的一个方面在于提供一种用于通过向中间语言库提供安全性来提供安全性以保护通用中间语言免受黑客攻击的设备和方法。
本公开的另一方面在于提供一种用于通过执行中间语言库的安全性来执行安全性以保护通用中间语言免受黑客攻击的设备和方法。
根据本公开的一方面,提供了一种用于提供安全性的设备,其存储通过组装执行引擎库和中间语言库而生成的执行封装,并且所述中间语言库通过编译多个文件而生成。所述设备包括:中间语言提取单元,其被配置为从所述执行封装中提取中间语言库;以及加密单元,其被配置为通过第一加密算法对从所述中间语言提取单元提取出的所述中间语言库进行加密并且通过第二加密算法对经加密的中间语言库进行加密来提供安全中间语言库。
所述装置还可以包括:文件替换单元,其被配置为以被所述加密单元加密的所述安全中间语言库替换所述执行封装的所述中间语言库,并且以包括映像(image)结构和对应于所述加密单元的解密单元的安全mono文件替换所述执行封装的mono文件。
所述设备还可以包括:安全文件生成单元,其被配置为通过所述第二加密算法对所述第一加密算法的加密密钥值进行加密来生成安全文件。
所述设备还可以包括:封装组装单元,其被配置为通过组装所述执行引擎库、被所述文件替换单元替换的所述安全中间语言库和所述安全mono文件以及由所述安全文件生成单元提供的所述安全文件来生成安全性执行封装。
当所述安全中间语言库被执行时,所述安全mono文件可以将所述安全中间语言库作为一个映像加载到主存储器中,并且在所述映像结构中存储经解密的中间语言库的每个部分的起始地址,以便访问执行代码。
所述第一加密算法可以是XOR运算算法,并且所述第二加密算法可以是高级加密标准(AES)算法。
根据本公开的另一方面,提供了一种用于执行安全性的设备。所述设备包括:执行引擎单元,其被配置为根据执行引擎库中的操作将安全中间语言库加载到主存储器中,所述安全中间语言库通过第一加密算法对中间语言库进行加密并且通过第二加密算法对经加密的中间语言库进行加密而生成;映像结构,其被配置为当所述安全中间语言库被加载到所述主存储器中时,执行所述安全中间语言库所需的初始化任务,并且从安全文件取出与所述第一加密算法相关的第一解密函数接口(decryption function interface)以及与所述第二加密算法相关的第二解密函数接口;以及解密单元,其被配置为通过从所述映像结构取出的所述第二解密函数接口对所述经加密的安全中间语言库进行解密,并且将所述经加密的中间语言库保持在所述主存储器的中间语言库区域中。
所述解密单元可以通过从所述映像结构取出的所述第一解密函数接口将所述经加密的中间语言库的头相关信息解密为原始中间语言库,在除所述中间语言库区域之外的存储区域中存储所述中间语言库的至少一条头相关信息,并且在所述映像结构中存储被存储在除所述中间语言库区域之外的存储区域中的头相关信息的位置。
当所述头相关信息被存储在除所述中间语言库区域之外的存储区域中时,所述解密单元可以对其中存储有所述头相关信息的所述中间语言库区域进行加扰,或者以无意义的值填充所述中间语言库区域。
根据本公开的另一方面,提供了一种提供安全性的方法。所述方法包括:存储通过组装执行引擎库和中间语言库而生成的执行封装,所述中间语言库通过编译多个文件而生成;从所述执行封装中提取所述中间语言库;通过第一加密算法对从所述执行封装中提取出的所述中间语言库进行加密;并且通过第二加密算法加密对所述经加密的中间语言库进行加密来生成安全中间语言库。
根据本公开的另一方面,提供了一种执行安全性的方法。所述方法包括:根据执行引擎中的操作将安全中间语言库加载到主存储器中,所述安全中间语言库通过第一加密算法对中间语言库进行加密并且通过第二加密算法对经加密的中间语言库进行加密而生成;当所述安全中间语言库被加载到所述主存储器中时,执行所述安全中间语言库所需的初始化任务;从安全文件中取出与所述第一加密算法相关的第一解密函数接口以及与所述第二加密算法相关的第二解密函数接口;并且通过所述第二解密函数接口对所述经加密的安全中间语言库进行解密,并且将所述经加密的中间语言库保持在所述主存储器的中间语言库区域中。
根据上述配置,本公开可以抵御针对中间语言库的静态分析攻击。也就是说,由于DLL在主存储器上被解密和执行,因此可以完全抵御静态分析攻击。
根据本公开,虽然通过AES算法在主存储器上对安全中间语言库进行解密,但是由于整体执行XOR运算,所以可以保护中间语言库免受黑客攻击。
根据本公开,由于头相关信息分布在整个主存储器中,并且DLL区域内的头相关信息被加扰,所以即使黑客发现DLL区域的地址,黑客也无法找到用于映射DLL区域内DLL的代码信息的信息。
附图说明
图1是示出根据本公开的实施例的针对通用中间语言的安全性提供系统的框图;
图2示出了图1的程序开发装置中的通用unity封装生成方法的示例;
图3示出了图2中所示的DLL的结构;
图4示出了根据本公开的安全mono文件的映像结构的示例;
图5是示出图1的安全性提供装置的框图;
图6示出了在图5的安全性提供装置中重新组装的安全unity封装;
图7是示出图1的安全性执行装置的框图;
图8示出了根据本公开实施例的其中安全性执行程序被加载到主存储单元中的状态;
图9A到9H示出了图8的安全性执行程序的操作;
图10是示出根据本公开的实施例的针对通用中间语言的安全性提供方法的流程图;并且
图11是示出根据本公开另一实施例的针对通用中间语言的安全性执行方法的流程图。
具体实施方式
在下文中,将参考附图描述根据本公开的提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法的优选实施例。作为参考,在以下描述中,涉及本公开的元件的术语是考虑到元件的功能而命名的,并且因此不应被解释为限制本公开的技术要素。
图1是示出根据本公开的实施例的针对通用中间语言的安全性提供系统的框图。
如图1所示,根据本公开的针对通用中间语言的安全性提供系统包括程序开发装置110、安全性提供装置120和安全性执行装置130。程序开发装置110、安全性提供装置120和安全性执行装置130可以通过有线/无线通信网络连接。
程序开发装置110是开发者通过其开发应用程序的装置。当开发应用程序时,执行引擎(例如,unity引擎)通过编译应用源代码来创建二进制代码并且创建执行封装(例如,包括所创建的二进制代码和必要资源库的unity封装)。
安全性提供装置120是用于为由程序开发装置110创建的unity封装提供安全性的装置。当由程序开发装置110创建的unity封装被上传时,安全性提供装置120提取通用中间语言库(例如DLL)、使用提取出的DLL执行双重加密、以根据双重加密修改的安全mono文件替换mono文件、并且然后再次创建安全unity封装。
安全性执行装置130是用于执行程序(例如,游戏程序)的用户终端设备。安全性执行装置130可以从程序开发装置110或安全性提供装置120下载安全unity封装并且执行游戏程序。
虽然图1将程序开发装置110和安全性提供装置120示为单独的装置,但这仅是示例,并且本公开不限于此。
图2示出了图1的程序开发装置中的通用unity封装创建方法的示例,并且
图3示出了图2中所示的DLL的结构。
如图2所示,Unity引擎通过编译脚本文件(例如,GameScript1.cs,GameScript2.cs,GameScript3.cs,...GameScriptN.cs)来创建通用中间语言的Assembly-CSharp.dll库。此外,Unity引擎创建unity封装,其包括所创建的Assembly-CSharp.dll和unity引擎相关资源库,例如Mono.Security.dll、UnityEngine.dll、mono.so和libunity.so into。
如图3所示,DLL的结构包括PE头、节表(section table)、文本节(text section)、CLI头,BSJB(流头)、流信息(#~流)和strings流。
PE头包括诸如构建时间和代码大小的DLL信息,并且可以根据本公开检测文本节内的CLI头位置。节表包括用于计算每个节的位置信息(RVA)的信息,并且可以根据本公开检测文本节位置。文本节是具有以DLL制作的实际执行代码的区域,并且还具有用于解析关于执行代码的信息的信息。可以通过文本节确定应用程序的操作,因为根据本公开文本节包括实际执行代码。
CLI头包括访问以通用中间语言(CLI)制作的代码所需的信息,并且可以根据本公开通过CLI头检测BSJB位置。BSJB具有#~流和Strings流的位置信息,并且因此可以根据本公开检测#~流的位置。流信息包括关于dll中的类(诸如模块、引用、定义或方法)的信息,并且特别地,方法信息包括文本节中的对应名称的功能的执行代码位置,并且可以根据本公开检测每个函数的执行代码位置。Strings流可以以字符串的形式存储实际的函数名称(诸如类名、函数名或字段名)或者用于初始化的值,并且即使在运行时字符串值也可以被该区域引用。
图4示出了根据本公开的安全mono文件的映像结构的示例。
安全mono文件是一种虚拟机,其用于在不是Window环境的操作系统中执行基于CLI的C#代码。如图4所示,安全mono文件在DLL被执行时将整个DLL作为一个映像加载到存储器中,并且基于此访问代码区域。此外,为了访问代码,DLL的每个部分的开始存储器地址被存储在mono文件内的映像结构820中。
在安全mono文件中,DLL实际上是经加密的。因此,为了应用安全性,在DLL被打开以访问实际信息之前,应当将被加载到存储器中的经加密的DLL进行解密,并且应当根据解密值将部分的开始存储器地址存储在映像结构中。如果整个DLL被一次解密,则解密值被全部加载到存储器中,使得黑客可以在加载DLL期间通过magic关键字或DOS头从存储器中动态提取原始DLL。为了防止这种情况,根据本公开,DLL可以被双重加密,并且只有必要的部分可以在加载时间点被解密并被使用。
图5是示出图1的安全性提供装置的框图,并且图6示出了在图5的安全性提供装置中再次组装的安全unity封装。
如图5所示,安全性提供装置120包括通用中间语言提取单元510、加密单元520、安全文件生成单元530、文件替换单元540和封装组装单元550。
通用中间语言提取单元510解析从程序开发装置110上传的unity封装的多个库和文件,并且提取通用中间语言库(例如,图2中所示的Assembly-CSharp.dll)。
加密单元520通过第一加密算法对整个DLL(例如,图2中所示的Assembly-CSharp.dll)进行加密。第一加密算法可以使用例如XOR密钥对整个DLL执行XOR运算。在这种情况下,第一加密算法可以通过对每块单元进行加扰来执行加密。
加密单元520通过第二加密算法对已经通过第一加密算法进行加密的整个DLL进行加密来生成安全中间语言库。第二加密算法可以包括诸如DES、AES和RSA的加密算法中的至少一种。这里,作为第二加密算法,优选的是使用高级加密标准(AES)算法来对经加密的整个DLL进行加密。
当加密单元520通过第二加密算法对第一加密算法的第一加密密钥值进行加密时,安全文件生成单元530可以生成安全文件(例如,图6中所示的appsealing.so),并且在生成的安全文件中存储与第一加密算法相关的第一解密函数接口以及与第二加密算法相关的第二解密函数接口。
文件替换单元540以安全中间语言库(例如,由加密单元520生成的安全DLL)替换unity封装的中间语言库,并且以包括图8中所示的映像结构820以及对应于加密单元520的解密单元830的安全mono文件替换unity封装的mono文件。
unity封装组装单元550将安全DLL(例如,作为被文件替换单元540替换的安全中间语言库的Assembly-SECSharp.dll)、安全mono文件(例如,secmono.so)、安全文件appsealing.so和必要的资源库重新组装到unity封装中。
图7是示出图1的安全性执行装置的框图。
如图7所示,安全性执行装置130可以包括CPU 710、主存储单元720、显示单元730、辅助存储单元740、输入单元750和网络单元760。
辅助存储单元740存储通过网络单元760从安全性提供装置120下载的安全性执行封装。当请求安全性执行封装(例如,游戏程序的安全unity封装)时,CPU 710将存储在辅助存储单元740中的安全unity封装加载到主存储单元720中。同时,游戏程序可以通过输入单元750或网络单元760接收新值。
根据本公开的实施例的安全性执行装置130可以是用户终端,诸如个人计算机(PC)、笔记本计算机、平板电脑、个人数字助理(PDA)、游戏机、便携式多媒体播放器(PMP)、便携式游戏站(PSP)、无线通信终端、智能电话、电视或媒体播放器。
图8示出了根据本公开实施例的其中安全性执行程序被加载到主存储单元中的状态。图9A到9H示出了图8的安全性执行程序的操作。
如图8所示,安全性执行程序包括执行引擎单元810、映像结构820和解密单元830。
执行引擎单元810根据执行引擎库中的执行引擎将安全中间语言库(例如,安全DLL)加载到主存储单元720中。
当安全中间语言库被加载到主存储单元720中时,映像结构820执行安全中间语言库所需的初始化任务,并且从安全文件取出与第一加密算法相关的第一解密函数接口以及与第二加密算法相关的第二解密函数接口。
解密单元830通过从映像结构820取出的第二解密接口对经加密的安全中间语言库进行解密,并且将经加密的中间语言库保持在主存储单元720的中间语言库区域840(例如,DLL区域)中。解密单元830通过从映像结构820取出的第一解密函数接口将经加密的中间语言库的头相关信息解密为原始中间语言库,在除中间语言库区域之外的存储区域850中存储中间语言库的至少一条头相关信息中的,并且在映像结构820中存储被存储在除中间语言库区域之外的存储区域850中的头相关信息的位置。当头相关信息被存储在除中间语言库区域之外的存储区域850中时,解密单元830对其中存储有头相关信息的中间语言库区域840进行加扰,或者以无意义的值填充所述中间语言库区域840。
在下文中,将参考图9更详细地描述安全性执行程序的操作。
当通过安全性执行装置130中的输入单元750执行应用(例如,游戏应用)时,CPU710将游戏程序加载到主存储单元720中。当执行被加载到主存储单元720中的游戏程序时,根据执行引擎单元810加载DLL(例如Assembly-SECSharp.dll)。
当DLL被加载时,映像结构820在现有逻辑中执行DLL映像解密所需的初始化任务。映像结构820取出与加密单元520的第二加密算法相关的第二解密函数接口(例如AES解密函数指针),并且取出与第一加密算法相关的第一解密函数接口(例如XOR解密函数指针)。
当存在指示DLL被加密在MS-DOS头的特定字节中的关键字时,解密单元830通过第二解密算法对整个DLL区域进行解密。当加密单元通过AES执行加密时,解密被执行以通过AES解密算法获得经解密的安全DLL。在这种情况下,主存储单元的DLL区域中的DLL仍然为借助于第一加密算法进行加密的DLL(参见图9A)。
解密单元830通过第二解密算法将头相关信息解密为原始,并且然后在映像结构820中存储其位置,并且对头相关信息的区域进行加扰(参见图9B至9G)。
下面将更详细地描述通过第二解密算法解密头相关信息的过程。
解密单元830首先通过执行XOR运算将XOR运算的MS-DOS头解密为原始,在映像结构820中存储PE头的位置并且对MS-DOS头进行加扰(见图9B)。
解密单元830通过执行XOR运算将XOR运算的PE头解密为原始,并且在映像结构820中存储文本节中的CLI头的位置。解密单元830还删除PE头的关键字,使得通过存储器中的关键字搜索不能找到DLL区域(参见图9C)。
解密单元830通过对其执行XRO运算,将XOR运算的节表解密为原始,并且参考节表解密除文本节之外的剩余节区域,并且在除DLL区域之外的存储区域中存储经解密的剩余节区域。解密单元830在映像结构820中存储除文本节之外的剩余节区域的地址,并对DLL区域内的相关节进行加扰(参见图9D)。
解密单元830通过对其执行XOR运算将XOR运算的CLI头解密为原始,并且从经解密的CLI头中提取流头的相对虚拟地址(RVA)。解密单元830还删除CLI头的关键字,使得通过存储器中的关键字搜索不能找到DLL区域(参见图9E)。
解密单元830通过对其执行XOR运算将每个XOR运算的流头解密为原始,通过经解密的流头解密除#~之外的剩余流,并且将经解密的流存储在除DLL区域之外的存储区域中。解密单元830在映像结构820中存储被存储在除DLL区域之外的存储区域中的每个流的地址,并且对DLL的解密流的区域进行加扰(参见图9F)。
解密单元830通过对其执行XOR运算将XOR运算的区域#~内的表解密为原始,并且存储在除解密区域#~内的DLL节表(模块、typeref、typedef、方法和字段)之外的存储区域中。解密单元830在映像结构820中存储被存储在除DLL区域之外的存储区域中的区域#~内的表的地址,并且对DLL的解密流的区域进行加扰(参见图9G)。
同时,解密单元830在除DLL区域之外的存储区域中仅存储在映像结构820中解密的区域#~内的表的头,并且将该方法留在DLL区域中。
解密单元830通过使用被存储在映像结构820中的头相关信息对被存储在XOR运算的执行代码的地址中的执行代码执行XOR运算,将执行代码解密为原始。
解密单元830通过执行XOR运算将XOR运算的文本节内的代码区域和文本节的剩余区域解密为原始,并且以预定值(即无意义的值)填充不必要的区域,诸如除DLL内的节表的代码区域和PE头之外的剩余区域。
图10是示出根据本公开的实施例的针对通用中间语言的安全性提供方法的流程图。
安全性提供装置120存储通过组装执行引擎库和中间语言库而生成的执行封装(例如,unity封装),所述中间语言库通过在S1002中编译多个脚本文件而生成。
在S1004中,中间语言提取单元510从执行封装中提取中间语言库。
加密单元520在S1006中通过第一加密算法对由中间语言提取单元510提取的整个中间语言库进行加密,并且在S1008中通过第二加密算法对经加密的中间语言库进行加密来生成安全中间语言库。
安全文件生成单元530通过第二加密算法对加密单元520的第一加密算法的加密密钥值进行加密来生成安全文件,并且在S1010中将生成的安全文件提供给执行封装。
文件替换单元540以被加密单元520加密的安全中间语言库替换执行封装的中间语言库,并且在S1012中以包括映像结构和对应于加密单元520的解密单元的安全mono文件替换执行封装的mono文件。
在S1014中,封装组装单元550通过组装执行引擎库、被文件替换单元540替换的安全中间语言库和安全mono文件以及由安全文件生成单元530提供的安全文件来生成安全性执行封装。
图11是示出根据本公开另一实施例的针对通用中间语言的安全性执行方法的流程图。
在S1102中,执行引擎单元810根据执行引擎库中的操作将安全中间语言库加载到主存储单元中。安全中间语言库通过第一加密算法对中间语言库进行加密并且通过第二加密算法对经加密的中间语言库进行加密而生成。
在S1104中,当安全中间语言库被加载到主存储单元中时,映像结构820在执行安全中间语言库所需的初始化任务。在S1106中,映像结构820从安全文件取出与第一加密算法相关的第一解密函数接口以及与第二加密算法相关的第二解密函数接口。
在S1108中,解密单元830通过从映像结构820取出的第二解密函数接口对安全中间语言库进行解密。经加密的中间语言库被保持在主存储单元的中间语言库区域中。
在S1110中,解密单元830通过从映像结构820取出的第一解密函数接口,将经加密的中间语言库的头相关信息解密到原始中间语言库。在S1112中,解密单元830在除中间语言库区域之外的存储区域中存储中间语言库的至少一条头相关信息,并且在S1114中,在映像结构820中存储被存储在除中间语言库区域之外的存储区域中的头相关信息的位置。
在S1116中,当头相关信息被存储在除中间语言库区域之外的存储区域中时,解密单元830对其中存储有头相关信息的中间语言库区域进行加扰,或者以无意义的值填充所述中间语言库区域。
S1118中,解密单元830通过使用被存储在映像结构820中的头相关信息,通过对其执行XOR运算,将被存储在XOR运算的执行代码的地址中的执行代码解密为原始。
本公开的实施例仅是本公开的技术构思的示例,并且本公开的范围应当由权利要求来解释。此外,本领域技术人员可以理解,在不脱离本公开的基本特征的情况下可以进行各种修改和改变,并且在与本公开等同的范围内的所有技术构思应当被解释为被包括在本公开的范围中。
Claims (7)
1.一种用于提供安全性的设备,其存储通过组装执行引擎库和中间语言库而生成的执行封装,所述中间语言库通过编译多个文件而生成,所述设备包括:
中间语言提取单元,其被配置为从所述执行封装中提取中间语言库;
加密单元,其被配置为通过第一加密算法对从所述中间语言提取单元提取出的所述中间语言库进行加密并且通过第二加密算法对经加密的中间语言库进行加密来提供安全中间语言库;以及
文件替换单元,所述文件替换单元被配置为以被所述加密单元加密的所述安全中间语言库替换所述执行封装的所述中间语言库,并且以包括映像结构和对应于所述加密单元的解密单元的安全mono文件替换所述执行封装的mono文件,
其中,当所述安全中间语言库被执行时,所述安全mono文件将所述安全中间语言库作为一个映像加载到主存储器中,并且在所述映像结构中存储经解密的中间语言库的每个部分的起始地址,以便访问执行代码。
2.根据权利要求1所述的设备,还包括安全文件生成单元,其被配置为通过所述第二加密算法对所述第一加密算法的加密密钥值进行加密来生成安全文件。
3.根据权利要求2所述的设备,还包括封装组装单元,其被配置为通过组装所述执行引擎库、被所述文件替换单元替换的所述安全中间语言库和所述安全mono文件以及由所述安全文件生成单元提供的所述安全文件来生成安全性执行封装。
4.根据权利要求1所述的设备,其中,所述第一加密算法是XOR运算算法,并且所述第二加密算法是高级加密标准(AES)算法。
5.一种提供安全性的方法,所述方法包括:
存储通过组装执行引擎库和中间语言库而生成的执行封装,所述中间语言库通过编译多个文件而生成;
从所述执行封装中提取所述中间语言库;
通过第一加密算法对从所述执行封装中提取出的所述中间语言库进行加密;
通过第二加密算法加密对经加密的中间语言库进行加密来生成安全中间语言库;以在生成所述中间语言库中生成的所述安全中间语言库替换所述执行封装的所述中间语言库,并且以包括映像结构以及对应于所述第一加密算法和所述第二加密算法的解密单元的安全mono文件替换所述执行封装的mono文件,
其中,当所述安全中间语言库被执行时,所述安全mono文件将所述安全中间语言库作为一个映像加载到主存储器中,并且在所述映像结构中存储经解密的中间语言库的每个部分的起始地址,以便访问执行代码。
6.根据权利要求5所述的方法,还包括通过所述第二加密算法对所述第一加密算法的加密密钥值进行加密来生成安全文件。
7.根据权利要求6所述的方法,还包括通过组装所述执行引擎库、在替换中被替换的所述安全中间语言库和所述安全mono文件以及在生成所述安全文件中提供的所述安全文件来生成安全性执行封装。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0158127 | 2017-11-24 | ||
KR1020170158127A KR102001046B1 (ko) | 2017-11-24 | 2017-11-24 | 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109840400A CN109840400A (zh) | 2019-06-04 |
CN109840400B true CN109840400B (zh) | 2023-09-29 |
Family
ID=66632529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810956392.7A Active CN109840400B (zh) | 2017-11-24 | 2018-08-21 | 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10867017B2 (zh) |
JP (1) | JP6698774B2 (zh) |
KR (1) | KR102001046B1 (zh) |
CN (1) | CN109840400B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110472425A (zh) * | 2019-07-18 | 2019-11-19 | 福建天晴在线互动科技有限公司 | 基于Mono的Unity插件加密方法、存储介质 |
WO2022097799A1 (ko) * | 2020-11-09 | 2022-05-12 | 동국대학교 산학협력단 | 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same} |
CN116028057A (zh) * | 2021-10-27 | 2023-04-28 | 北京字节跳动网络技术有限公司 | 代码管理的方法和装置 |
KR102622866B1 (ko) * | 2022-09-26 | 2024-01-09 | (주)잉카엔트웍스 | 매크로봇 탐지 서비스 제공 방법 및 시스템 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199657A (zh) * | 2014-08-27 | 2014-12-10 | 百度在线网络技术(北京)有限公司 | 开放平台的调用方法及装置 |
CN105612527A (zh) * | 2013-08-22 | 2016-05-25 | Inka安特沃客有限公司 | 为基于通用中间语言的程序提供安全性的方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539433B1 (en) * | 1998-09-30 | 2003-03-25 | Matsushita Electric Industrial Co., Ltd. | System for distributing native program converted from Java bytecode to a specified home appliance |
US7320075B2 (en) * | 2001-11-20 | 2008-01-15 | Safenet, Inc. | Software protection method utilizing hidden application code in a protection dynamic link library object |
US7260555B2 (en) * | 2001-12-12 | 2007-08-21 | Guardian Data Storage, Llc | Method and architecture for providing pervasive security to digital assets |
US8155306B2 (en) * | 2004-12-09 | 2012-04-10 | Intel Corporation | Method and apparatus for increasing the speed of cryptographic processing |
EP1891520B1 (en) * | 2005-06-07 | 2017-09-13 | VMware, Inc. | Constraint injection system for immunizing software programs against vulnerabilities and attacks |
US7962798B2 (en) * | 2006-04-17 | 2011-06-14 | The Trustees Of Columbia University In The City Of New York | Methods, systems and media for software self-healing |
US8423789B1 (en) * | 2007-05-22 | 2013-04-16 | Marvell International Ltd. | Key generation techniques |
US8756439B1 (en) * | 2009-08-28 | 2014-06-17 | Physical Optics Corporation | Encryption key management for secured access |
US8412934B2 (en) * | 2010-04-07 | 2013-04-02 | Apple Inc. | System and method for backing up and restoring files encrypted with file-level content protection |
US9143530B2 (en) * | 2011-10-11 | 2015-09-22 | Citrix Systems, Inc. | Secure container for protecting enterprise data on a mobile device |
WO2014022636A1 (en) * | 2012-08-02 | 2014-02-06 | Trustees Of Tufts College | Broad spectrum inhibitors of the post proline cleaving enzymes for treatment of hepatitis c virus infections |
US9087191B2 (en) * | 2012-08-24 | 2015-07-21 | Vmware, Inc. | Method and system for facilitating isolated workspace for applications |
US20150302218A1 (en) * | 2014-04-22 | 2015-10-22 | Pacid Technologies, Llc | Method and system for file hiding |
KR101667774B1 (ko) * | 2015-04-23 | 2016-10-19 | (주)잉카엔트웍스 | 스크립트 프로그램을 위한 보안 제공 장치 및 방법 |
KR101693249B1 (ko) * | 2015-09-08 | 2017-01-06 | 충북대학교 산학협력단 | 어플리케이션 관리 시스템 및 방법 |
-
2017
- 2017-11-24 KR KR1020170158127A patent/KR102001046B1/ko active IP Right Grant
-
2018
- 2018-08-21 CN CN201810956392.7A patent/CN109840400B/zh active Active
- 2018-09-13 US US16/130,144 patent/US10867017B2/en active Active
- 2018-09-20 JP JP2018175877A patent/JP6698774B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105612527A (zh) * | 2013-08-22 | 2016-05-25 | Inka安特沃客有限公司 | 为基于通用中间语言的程序提供安全性的方法 |
CN104199657A (zh) * | 2014-08-27 | 2014-12-10 | 百度在线网络技术(北京)有限公司 | 开放平台的调用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109840400A (zh) | 2019-06-04 |
US10867017B2 (en) | 2020-12-15 |
JP2019096299A (ja) | 2019-06-20 |
KR102001046B1 (ko) | 2019-07-17 |
JP6698774B2 (ja) | 2020-05-27 |
KR20190060179A (ko) | 2019-06-03 |
US20190163884A1 (en) | 2019-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840400B (zh) | 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法 | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
JP5996810B2 (ja) | 自己書換え基盤のアプリケーションコード難読化装置及びその方法 | |
US8090959B2 (en) | Method and apparatus for protecting .net programs | |
JP5990654B2 (ja) | アプリケーションコード難読化装置及びその方法 | |
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
CN104239757B (zh) | 应用程序防止逆向的方法及装置、运行方法及终端 | |
RU2620712C2 (ru) | Устройство виртуальной машины, имеющее управляемую ключом обфускацию, и способ | |
CN109598107B (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
CN104318155A (zh) | 一种防逆向apk文件的动态加载方法 | |
CN104408337A (zh) | 一种apk文件防逆向的加固方法 | |
CN107273723B (zh) | 一种基于so文件加壳的Android平台应用软件保护方法 | |
CN111191195A (zh) | 一种用于保护apk的方法和装置 | |
CN107871066B (zh) | 基于安卓系统的代码编译方法及装置 | |
KR101734663B1 (ko) | 안드로이드 어플리케이션의 역공학 방지 방법 및 이를 수행하는 장치 | |
CN107220528A (zh) | Java程序的保护与运行方法、装置和终端 | |
KR101749209B1 (ko) | 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치 | |
KR101667774B1 (ko) | 스크립트 프로그램을 위한 보안 제공 장치 및 방법 | |
KR101863325B1 (ko) | 역공학 방지 방법 및 장치 | |
KR102039380B1 (ko) | 공유 오브젝트의 코드 보호를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법 | |
CN113905277B (zh) | 一种浏览器端播放视频的方法、装置及电子设备 | |
KR101704703B1 (ko) | 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |