CN109313677A - 用于动态可执行验证的方法和装置 - Google Patents

用于动态可执行验证的方法和装置 Download PDF

Info

Publication number
CN109313677A
CN109313677A CN201780035705.9A CN201780035705A CN109313677A CN 109313677 A CN109313677 A CN 109313677A CN 201780035705 A CN201780035705 A CN 201780035705A CN 109313677 A CN109313677 A CN 109313677A
Authority
CN
China
Prior art keywords
function
application program
generated
verification
subset
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
CN201780035705.9A
Other languages
English (en)
Other versions
CN109313677B (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.)
Keen Trend LLC
Original Assignee
Keen Trend LLC
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 Keen Trend LLC filed Critical Keen Trend LLC
Publication of CN109313677A publication Critical patent/CN109313677A/zh
Application granted granted Critical
Publication of CN109313677B publication Critical patent/CN109313677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/54Monitoring 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 adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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
    • 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/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

公开了一种用于动态可执行验证(DEV)的方法和装置,包括二进制应用程序的函数的随机前缀、用于该函数的至少子集的校验函数和用于该函数的至少子集的跳转表。DEV为应用程序成功提供与标准代码签名和验证方法兼容的低影响动态完整性保护,并且确保软件不会在没有检测的情况下被静态或动态地篡改。

Description

用于动态可执行验证的方法和装置
相关申请的交叉引用
本申请要求2016年5月5日、由Lex Aaron Anderson提交的的名为“DYNAMICEXECUTABLE VERIFICATION(DEV)”的美国临时专利申请No.62/333,332的优先权,该申请通过引用并入本文。
技术领域
本公开涉及用于生成和执行可执行文件(executables)的系统和方法,尤其涉及 用于生成和执行动态可验证的可执行文件的系统和方法。
背景技术
数字版权管理(DRM)和其他安全系统易受旨在破坏其安全措施的篡改攻击。这在“Tamper Resistant Software:Design and Implementation.In First InternationalWorkshop on Information Hiding,第317–333页.Springer-Verlag,1996年5月;BillHorne,Lesley Matheson,Casey Sheehan,以及Robert Tarjan.Dynamic Self-CheckingTechniques for Improved Tamper Resistance.Security and Privacy in DigitalRights Management,第141–159页,2002年;以及Yuqun Chen,Ramarathnam Venkatesan,Matthew Cary,Ruoming Pang,Saurabh Sinha,和Mariusz Jakubowski.ObliviousHashing:A Stealthy Software Integrity Verification Primitive.5thInternational Workshop on Information Hiding,第400–414页,2002年”中描述过,所有这些都通过引用结合在此。
完整性保护的目标是增加此类攻击的成本。首先对常用的完整性保护机制简要调查。然后,描述一种可由软件保护工具使用的动态可执行验证的新颖结构,如在2016年,由L.Aaron Anderson“Dynamic Executable Verification(DEV)”中所述,其通过引用并入本文。
代码签名:商业用途中的大多数完整性保护方法旨在防止静态篡改攻击,其涉及在执行之前对程序的二进制代码的未授权修改。这些方法包括APPLE代码签名和MICROSOFT代码签名,如在分别由APPLE公司出版的“About Code Signing”和由(2016年)微软公司出版的MICROSOFT代码签名(“Introduction to Code Signing(Windows)”中所述,分别通过引用并入本文。这些代码签名和验证方法不检测在运行时对可执行代码所做的动态修改,例如通过缓冲区溢出攻击,如在(2014年)由Thomas Schwarz和S.J的“Buffer OverflowAttack”中所述,其通过引用并入本文。
自校验:自校验技术在Horne等人(上文引用)和在(2002年)“Security andPrivacy in Digital Rights Management”出版的、Hoi Chang和Mikhail J Atallah的“Protecting Software Code by Guards”,第160-175页中所述,其通过引用并入本文。在这些自校验技术中,程序反复地校验自身以验证它是否未被修改。这些技术包括加密散列的动态(或运行时计算)或所识别的代码段中的指令的校验和,其在程序执行期间与各个点处的预先计算的散列或校验和值比较。然后,所检测的篡改将触发响应机制,诸如无声失败模式。
虽然这些方法在运行时可靠地检测可执行代码中的不期望变化,但是由于操作的非典型性质,攻击者相对容易识别验证例程。因为大多数应用程序不读取它们自己的代码段,如在由Marjanne Plasmans,由Technische Universiteit Eindhoven(2005年)出版的Master’s thesis的White-Box Cryptography for Digital Content Protection中所述,其通过引用并入本文。
只要检测到,可以通过条件逻辑修改来破坏这些方案,如在Chang和Atallah(上文引用)中或经由硬件攻击所述,如在“Distribution”的6月版中出版的“Hardware-AssistedCircumvention of Self-Hashing Software Tamper Resistance”中所述,第1-13页(2005),其通过引用并入本文。最近,这些方案已被虚拟机调试攻击击败,其中,程序代码段中的地址范围可以被转换为代码的未更改的静态映像,使得尽管修改了底层程序代码,也总是正确地计算任何散列或校验和值。参见例如,由Danny Quist和Valsmith,在“BlackhatUSA 2007and Defcon 15”(2007)中出版的“Covert Debugging Circumventing SoftwareArmoring Techniques”,其通过引用并入本文。
即时代码解密:Aucsmith和Wang等人利用自修改、自解密代码的概念,其中,利用加密图像的任何篡改将导致“垃圾”指令的解密,这导致灾难性的运行时故障。(分别参见David Aucsmith,在“First International Workshop on Information Hiding”中发表的“Tamper Resistant Software:Design and Implementation”,第317-333页。Springer-Verlag,1996年5月。ISBN 3-540-61996-8和Ping Wang、Seok-kyu Kang和Kwangjo Kim,在“Proc.Symp.on Cryptography and Information Security”2005(SCIS 05)中发表的“Tamper Resistant Software Through Dynamic Integrity Checking”,它们通过引用并入本文。
已经提出使用该技术的变型的多个结构并且实现各种结果。分别参见由JCappaert、N Kisserli、D Schellekens、Bart Preneel和K Arenberg在“1st BeneluxWorkshop on Information and System Security”(WISSec2006)中发表的“Self-Encrypting Code to Protect Against Analysis and Tampering,”、由WillardThompson、Alec Yasinsac和J Todd McDonald发表的“Cryptoprogramming:A SoftwareTamper Resistant Mechanism Using Runtime Pathway Mappings”,以及由WillardThompson在“Advanced Cryptography”131:1–11,2005中发表的“CryptomorphicProgramming:A Random Program Concept”,它们分别通过引用并入本文。然而,广泛采用的存储器保护标准,诸如PAE/NX/SSE2(参见Hewlett Packard.Data ExecutionPrevention.2005)以及最近的Intel's MPX(由Ramu Ramakesavan、Dan Zimmerman和Pavithra Singaravelu在2015年4月发表的“Intel Memory Protection Extensions(Intel MPX)Enabling Guide”,通过引用并入本文),支持主流操作系统和工具链(由英特尔公司发表的“Intel MPX support in the GCC compiler-GCC Wiki”,通过引用并入本文)将该方法限制到传统和非标准实施方案。例如,从Microsoft CL编译器/链接器的版本18.x开始,在编译和链接时都会忽略关于可执行代码段的可写属性的规范。
明显的散列:由Yuqun Chen、Ramarathnam Venkatesan、Matthew Cary、RuomingPang、Saurabh Sinha和Mariusz Jakubowski在the 5th International Workshop onInformation Hiding,第400-414页,2002年中发表的“Oblivious Hashing:A StealthySoftware Integrity Verification Primitive”(通过引用并入本文)提出了一种被称为明显散列的技术,其中,该想法是散列代码段的执行轨迹。主要目标是将散列代码与代码块无缝地混合,使其在本地无法区分。在待保护的代码必须运行(或被模拟)以便生成散列的意义上,明显的散列是活动的。明显的散列还取决于程序的确切路径,如由程序的输入确定。
成功的明显散列取决于执行程序的特定控制流路径,通常将该方法的适用性限制到具有可预测控制流的算法。
后链接可执行修改:许多方法涉及可执行代码后链接的修改,以便注入用于运行时验证目的的代码或数据元素,例如散列或校验和。后链接可执行修改的缺点包括(1)与标准代码签名和验证方法的不兼容性,(2)由于与编译时或链接时优化的可能冲突而导致的有限工具链兼容性,(3)与修改二进制文件后链接的技术冲突,诸如APPLE的应用程序细化,参见APPLE公司的“App Thinning(iOS,tvOS,watchOS)”,(2016),通过引用并入本文),以及(4)对完成二进制表示的外部第三方工具的潜在依赖性。
其他难处理的方法:如由Giovanni Tropeano、CodeBreakers Magazine,(2006)在“Self Modifying Code”中所述,通过引用并入本文,出现在商业用途中,无需易处理的安全性描述。如果无法客观评估这些方法的安全属性,则不太可能通过严格的安全审计。
所需要的是完整性保护系统和方法,其避免了上文中描述的缺陷。该系统和方法应当增加静态和动态篡改攻击的成本、基于可以由安全审计员验证的易于管理的原理、耐现实世界的攻击,并且基于声音加密原理。系统和方法还应当是轻量级的,因为应当具有低性能开销和小内存占用。该系统和方法还应当允许自动生成的完整性保护代码的精细可调百分比和位置,允许完整性保护目标和验证代码的位置的完全手动控制,并且应该允许自动或定制检测响应。该系统和方法还应当与标准代码签名和验证方法兼容,并且不需要冻结/定案的二进制表示。该系统和方法还应当支持各种用例,包括强调最小化对现有过程的影响的“简易模式”、对于具有合理安全期望的典型用例的“正常模式”,以及安全性是主要动机的实施方式的“安全模式”。该系统和方法应当使用格式,以提供针对密钥大小和加密方案的更改的未来验证,诸如X.509。该系统和方法应当提供广泛的平台兼容性,包括x86Linux(32和64位)、x86Mac OS X(32和64位)、x86Windows(32和64位)、本机客户端PNaCl32位、ARM iOS 32位,和ARM Android 32位。该系统和方法还应当提供广泛的工具链兼容性,包括与Microsoft CL、Microsoft Visual Studio IDE、Clang、Apple Xcode IDE、GNUGCC、Android Studio IDE、Android NDK、Android SDK和Google PNaCl的兼容性。
发明内容
为了解决上述要求,本文献公开了一种用于生成具有多个函数的可动态验证的应用程序可执行文件的系统和方法。在一个实施例中,该方法包括:在构建时:将随机前缀前置添加到所述应用程序的二进制文件的多个函数f的至少子集;针对所述多个函数的至少子集的每个函数生成校验函数;将每个所生成的校验函数注入到所述应用程序的二进制文件中的随机位置;生成跳转表J,并且注入对跳转表的调用。所述跳转表J针对所述多个函数的子集中的每个函数具有相应函数和所生成的校验函数之间的映射;其中,所述相应函数和所生成的校验函数之间的映射与标识符o相关联并且被随机注入到所述跳转表J中。
另一实施例由具有处理器和存储用于执行上述操作的处理器指令的通信耦合存储器的装置来例证。
已经讨论的特征、功能和优点可以在本发明的各种实施例中独立地实现,或者可以在其他实施例中组合,可以参考下述描述和附图看出其进一步的细节。
附图说明
现在参考附图,其中,相同的附图标记始终表示相应的部件:
图1是示出可以被用于构建、链接、激活和运行受保护的可执行文件的硬件元件的图;
图2是示出动态可执行验证(DEV)过程和生成可动态验证应用程序可执行文件的图。
图3是表示示出可以如何指定DEV保护的表的图。
图4是示出在编译期间将DEV保护应用于具有多个功能或方法的程序的图。
图5是呈现可以被用于生成DEV保护的应用程序的示例性方法步骤的图;
图6是呈现引导程序例程、其用途及其相关的操作模式值的表的图。
图7A-图7B是图示动态完整性保护生成算法的图;
图8-图10图示如何链接后激活可执行文件的不同实施例;
图11是示出运行时执行期间的动态完整性验证的实施例的图;
图12是图示根据激活和运行时过程的模式和信任级在不同配置中可获得的一系列安全级的图;
图13是示出如何使用图3中所述的参数在命令行中指定DEV保护的一个实施例的图;
图14是示出可以在执行解密操作的示例性应用程序的源代码中指定DEV保护的一个实施例的图;以及
图15示出了可以被用来实现上述公开的处理元件的示例性计算机系统。
具体实施方式
描述
在下述描述中,参考形成其一部分的附图,并且通过例示的方式示出了多个实施例。应当理解到,在不脱离本公开的范围的情况下,可以利用其他实施例并且可以进行结构改变。
概述
图1是示出可以被用来构建、链接、激活和运行受保护的可执行文件的硬件元件的图。源代码101被提供给第一处理器102,第一处理器102执行构建时操作以生成源代码的二进制版本,并且经由链接器链接(下文所述的)这样的二进制文件(binaries)以生成激活可执行文件103A。激活可执行文件103A可以被提供给第二处理器,诸如激活处理器104,103R,然后在诸如运行时处理器106的第三处理器上运行。尽管第一处理器102被示为单个处理器,但是构建和链接过程可以由单独的处理设备来执行,这些处理设备可以被放置在不同的物理位置。
动态可执行文件验证概述
图2是示出动态可执行验证(DEV)过程和生成动态可验证应用程序可执行文件的图。在构建时生成保护元素,然后当将有效的X.509证书(.cer)传递给受保护的可执行文件时激活后链接。不对可执行文件进行修改。相反,在激活期间会生成安全(.sec)“散列表”数据,其被用来在运行时强制执行完整性保护。对可执行文件或.sec数据的未经授权更改将导致运行时故障模式。总之,该过程描述如下。
在构建时,指定源代码DEV保护,如步骤(1)所示。如下文进一步所述,可以在工具链204的命令行上或在源代码202本身中指定该DEV保护。这参考图13和14进一步描述。
在步骤(2)中,生成完整性保护元素并且将其注入到源代码中以在工具链204的编译期间创建受保护的二进制文件。还可以生成来自其他工具链206的二进制文件208。这参考图4和5进一步描述。
在链接时,通过标准112链接器执行链接以产生可执行文件103。在该步骤中不需要工具链204的参与。这在步骤(3)中示出。
在激活时,当将有效的X.509证书(.cer)提供给可执行文件时,激活后链接DEV保护。这在步骤(4)中示出,并且在下文中,在“激活DEV保护”章节中进一步描述。
在运行时,注入的完整性保护元素使用.sec数据来在执行期间验证二进制文件的完整性,如在步骤(5)中所示并且在下文的“运行时验证”章节中进一步描述。在运行时执行之前或期间篡改可执行文件或.sec数据将导致运行时故障模式,如下文的“运行时故障模式”章节中所述。
图3是示出如何指定DEV保护的一个实施例的表的图。可以在多个模式之一中提供DEV保护。在模式0中,在构建时,将对引导程序(bootstrap)的调用(下文进一步描述)自动地注入到可执行文件103的入口点,并且相同的可执行文件用于激活(例如,可执行文件103A)和运行时(例如,可执行文件103R)。
在模式1中,软件开发人员负责调用引导程序,并且同样地,相同的可执行文件103用于激活和运行时。
在模式2中,软件开发人员负责调用激活可执行文件103中的引导程序并且负责在运行时调用运行时可执行文件103R。模式的选择由参数modeDEV确定,该参数指定如何生成和激活DEV完整性保护。modeDEV参数是被输入到工具链204的命令行。其他参数指定读/写数据值的路径、用在加密操作中的种子,以及指定通过自动地注入放在可执行文件103中的完整性校验应当保护多大百分比的函数的参数(perDEV)(可以被作为命令行、函数/方法或代码级输入,以及另一参数(addDEV),其在对(在函数/方法或代码级指定的)特定函数的源代码202中的当前位置处注入完整性校验。
图4是示出在由工具链204编译期间,将DEV保护应用于具有多个函数或方法f1,f2,...fn 402A-402N的程序P,在编译之后导致受保护程序P'210的一个实施例的图。在构建/链接处理器102上执行的DEV模块在构建时,将为函数402A-402N前置添加的随机函数前缀404A-404N、相应的校验函数406A-406N、不透明跳转表(右)408A-408N,以及引导程序410注入到受保护的二进制文件210。
随机函数前缀
图5是呈现可以被用来生成受保护应用程序的示例性方法步骤的图。在框502,随机前缀fprefix 404A-404N(在下文中,统称或替选地称为函数前缀404)被前置添加(prepend)到输入程序P 202中的多个函数/方法f1,f2,...fn 402A-402N(在下文中,统称或替选地称为函数402)的至少子集。在一个实施例中,前缀404是16个字节的函数前缀,其被前置添加到相关联的函数。这被设计成通过自动和手动分析技术来逃避校验函数406的检测,以识别自参考篡改检测代码。在占用空间方面,使用小的随机函数前缀402应当是轻量级的,对性能的影响可以忽略不计。图4示出了输入程序202的函数的子集包括输入程序202的每个函数402A-402N的实施例。前缀404A-404N已经被前置添加到输入程序202中的每个受保护函数402A-402N。
随机生成的校验函数
返回图5,框504对至少一个函数的子集的每个函数402A-402N生成校验函数406A-402N。回到图4中呈现的示例,针对各个函数402A-402N生成校验函数406A-406N。在一个实施例中,校验函数406本身是随机的,因为执行的实际函数从校验函数406随机变化为校验函数406。这使得攻击者难以识别校验函数406或将其与其他校验函数406或其他函数区分开来。框506将所生成的校验函数406A-406N中的每一个注入到应用程序的二进制文件中的随机位置中。
在随机位置自动注入校验函数
校验函数406A-406N可以包括一个或多个校验函数fc(表示f的校验函数c),其由DEV模块在二进制文件中的随机位置自动注入以产生受保护的二进制文件P'210。可以经由变量“perDEV”控制自动生成和注入校验函数的程序P 202的函数f的数量,其中,当且仅当均匀随机变量X≥perDEV时,自动生成校验函数并且将其注入到程序202中,其中,X均匀地分布在1到100的间隔内。将perDEV参数设置为0禁用自动注入的校验。
在指定位置手动注入校验函数
校验函数406A-406N还可以包括一个或多个手动指定的校验函数gc(表示g的校验函数c)。可以在源202中使用addDEV(g)参数,将手动指定和注入的校验函数放置在二进制文件的任何特定位置。一个或多个手动指定的校验函数gc也可以是随机的(例如,该函数在函数间随机地变化),但是使用addDEV(g)参数插入到特定位置的二进制文件中。
在计算循环内实现否则将一次次地重新校验函数的情况下,使用手动指定的校验函数特别有用。这可以发生在例如当函数嵌套(例如,一个函数f调用另一个函数g)时。在这种情况下,addDEV(g)参数可以插入调用函数f内。在这种情况下,调用函数f不一定与所校验的函数g相同。
每个校验函数(fc和gc)的大小通常小于1KB。
不透明跳转表
返回图5,框508生成多个跳转表J 408A-408N,其对于多个函数402A-402N的子集中的每个函数404,具有函数402A-402N的前缀之间的映射(引用f1-fN 402A-402N的prefix1-prefixN 404A-404N而不是f1-fN402A-402N本身避免对函数f1-fN 402A-402N或相应的校验函数fa-fn406A-406N的任何直接引用)。
在所示实施例中,相应函数402A-402N和所生成的校验函数406A-406N之间的映射与随机标识符o相关联,并且映射被随机注入跳转表J(o)。在一个实施例中,非静态函数被用来计算跳转表408A-408N的元素之间的关系。由于动态地计算(使用运行时状态和函数计算)这些函数,因此它们的输出不存在于程序的静态图像中。这通过混淆函数402A-402N与相应生成的校验函数406A-406之间的关系和标识符o,将跳转表408A-408N渲染为对静态分析“不透明”。
在由另一个函数f调用校验函数g的实施例中,由跳转表J定义的关系还包括调用函数f。对于每个随机生成的不透明标识符o∈O,不透明跳转表J(o)计算映射J(o)=gc,以便隐藏调用函数f和校验函数gc之间的关系。
此外,为了增加安全性,映射J(o)408A-408N可以被实现为基于对已知硬问题的简化的复杂布尔表达式,诸如在由L Aaron Anderson发表的“A survey of control-flowobfuscation methods”(2015年10月)中所述,其通过引用并入本文。在一个实施例中,每个跳转表条目的大小为16-24字节。
引导程序
返回图5,框508从应用程序的二进制文件的引导程序410插入对具有标识符(o)的所生成的跳转表的调用,以生成受保护的二进制文件P'210。引导程序410通过使得从输入设备引入剩余程序的有限多个初始引导程序指令,加载程序以处理。
图6是呈现引导程序例程、其用途及其相关操作模式值的表的图。基于由modeDEV变量的值选择的模式,在构建时将DEV引导程序410例程注入到受保护的二进制文件210中。例如,对于模式0(modeDEV=0),引导程序DEV_INIT在构建时被注入到受保护的二进制文件,而对于模式1(modeDEV=1),引导程序例程DEV_INIT和DEV_INIT_EX在构建时被注入到受保护的二进制文件中。类似地,对于模式2(modeDEV=2),使用引导程序例程DEV_SETUP、DEV_SETUP_EX,DEV_RUN和DEV_RUN_EX。“SETUP”和“EX”后缀是指“INIT”引导程序被分成单独部分的事实。“DEV_SETUP”部分处理图4中所示的操作,而“DEV_RUN”部分处理图11中所示的操作。
在激活时或运行时,如果散列表(.sec)数据218(下文进一步论述)不存在,并且如果有效的X.509证书214被传递到引导程序410,则引导程序410通过(经由混淆的跳转表J)调用每个校验函数406(fc,gc∈P′)来激活DEV保护来生成所需的安全散列表数据218。激活是每个实现实例的一次性动作。在激活之后,引导程序410将散列表(.sec)数据218读入存储器以供在运行时验证期间使用。引导程序410的大小通常仅为几KB。在下文中,进一步论述激活时间和运行时过程。
图7A和图7B是图示通用DEV完整性保护生成算法的列表的图。在该实施例中,对程序P 202中的所有函数f 402执行步骤1-16,并且对由函数f 402校验的程序P 202中的每个函数g执行步骤17-28(在这种情况下,函数f 402正在调用已经(经由插入addDEV参数)向将要完整性校验的函数g手动指示的校验函数gc。“调用”关系在函数f和校验函数之间,如果校验函数c正在检查f,则为fc;或者如果校验函数正在检查其他函数,则为gc(由于addDEV(g)被写入函数f内)。重要的是,f和g之间的调用关系不是必需的条件。
步骤2-3将随机前缀前置添加到函数f 402。步骤5校验以确定是否X≥perDEV(指示期望插入随机校验函数fc 406,以及函数f 402的哪个百分比应当包括相关的随机校验函数fc 406)。如果期望这样的随机校验函数fc 406,则处理转到步骤6-9,否则转到步骤17。步骤6-9随机生成f 402的校验函数fc 406,并且将校验函数fc 406随机地注入到受保护的二进制文件P'210。
步骤10确定是否已经生成随机插入的校验函数fc 406,如果是,则对该随机插入的校验函数fc 406,将处理转到步骤11-14。步骤11生成用于跳转表J(o)408的随机不透明标识符o。在步骤12中,将从不透明标识符o到校验函数fc 406的映射插入到跳转表J(o)中。在步骤13中,将不透明跳转表调用J(o)408插入到引导程序410中。
步骤15将不透明跳转表调用J(o)408注入到f 402的入口点。
步骤17根据perDEV百分比参数,确定是否自动地保护函数f 402。对于被手动指示为(例如通过插入addDEV完整性检查参数),需要已经指定手动插入校验函数gc的完整性保护的函数的所有函数g执行步骤18-28。在步骤18-19中,生成函数g的校验函数gc。如自动生成的校验函数的情形,可以随机地生成校验函数gc
在步骤20中,然后将每个生成的校验函数gc随机地注入受保护的二进制文件P'R中(下标R表示对受保护的二进制文件的随机偏移)。在步骤22-26中,对每个生成的校验函数gc生成随机不透明标识符J(o),并且将来自该随机不透明标识符J(o)的映射注入到跳转表JR中,并且不透明跳转表调用J(o)被插入到引导程序410中。在步骤27中,将不透明跳转表调用J(o)插入在f(addDEV(g))的addDEV命令行的位置处。然后,将函数f 402随机地插入到受保护的二进制文件中,如步骤29所示。对于期望完整性校验的P 202中的每个函数f 402重复这些步骤,如步骤30所示。在步骤31中,返回受保护的二进制文件P'210。
激活DEV保护
图8-图10图示了可以如何激活103R可执行文件103A的不同实施例。在每个实施例中,在从工具链204成功地验证证书数据214之后,引导程序410从校验函数406A-406N生成安全散列表数据218,并且将安全散列表数据218提供给运行时可执行文件103R以允许成功执行运行时可执行文件103R。
图8是图示可以如何激活具有DEV保护的程序的一个实施例的图。在该实施例中(模式0,如通过将图3中所示的modeDEV参数设置为零来选择),在首次执行受保护的可执行程序103时激活DEV保护。在该实施例中,激活DEV保护不是修改激活可执行文件103。
在激活时,引导程序410接收由工具链204提供的DEV X.509证书(*.sec)。如果证书214有效,则生成安全散列表(*.sec)数据218。如果证书214无效,则不生成安全散列表218,并且可以不运行运行时可执行文件103R。
使用引导程序生成安全散列表数据218,该安全散列表数据218由运行时可执行文件103R使用来在激活时强制执行完整性保护。通过经由关联的跳转表J(o)调用每个校验函数f的校验函数fc,生成安全散列表数据218。例如,如果函数f的校验函数fc是生成函数f本身的二进制的散列的函数,则安全散列表数据218可以简单地包括该函数的二进制的所生成的散列。在其他实施例中,散列表可以包括从函数的二进制生成的其他加密数据,并且由此确定函数f的准确性。在该实施例中,将对图6中所示的DEV_INIT引导程序410的调用在构建时自动地注入到可执行文件的入口点。
图9是图示如何激活具有DEV保护的程序的另一实施例的图。在该实施例中,(模式1,如通过将图3中所示的modeDEV参数设置为1来选择),在首次运行受保护的可执行程序时激活DEV保护。DEV保护不会在任何时刻修改该可执行文件。在激活期间,DEV引导程序410验证所提供的DEV X.509证书(.cer)数据214。如果有效,则生成安全散列表(*.sec)数据218,其由运行时可执行文件103R使用来在运行时强制执行完整性保护。在该模式中,开发人员负责调用图6中所示的DEV_INIT或DEV_INIT_EX引导程序410,并且在运行时使用用于激活的同一可执行代码(例如,激活可执行文件103A与运行时可执行文件103R相同)。
图10是图示如何激活具有DEV保护的程序的又一实施例的图。在该实施例中,(模式2,如通过将图3中所示的modeDEV参数设置为2来选择),DEV保护由与运行时可执行文件103R分开的设置可执行文件103A激活。DEV保护在任何时刻不会修改任一可执行文件。在激活期间,DEV引导程序410尝试验证所提供的DEV X.509证书(.cer)数据214。如果有效,则生成安全散列表(.sec)数据218,其由运行时可执行文件103R使用来强制执行完整性保护。在该实施例中,设置(或激活)可执行文件103A被用于激活,并且在运行时使用不同的可执行文件(运行时可执行文件103R)。开发人员负责调用设置可执行文件中的DEV_SETUP或DEV_SETUP_EX引导程序410以生成散列表数据(*.sec)218,并且负责调用运行时可执行文件103R中的DEV_RUN或DEV_RUN_EX引导程序410以执行运行时可执行文件。
运行时的动态验证
图11是示出执行可执行文件103的图。可执行文件的动态验证发生在运行时执行可执行文件103期间,根据在混淆跳转表J(o)408中定义的映射来调用每个校验函数fc。跳转表J(o)408被用来查找函数f 402、校验函数fc 406和与前缀相关联的散列表数据h1106,并且使用校验函数fc 406、函数f 402以及散列表数据h 1106来验证未篡改函数f402(或散列表数据)。
例如,执行可执行文件103将导致函数f1 402A的校验函数fc1 406A计算f1 402A的二进制的散列,并且将该散列和与校验函数fc1 406A相关联的散列表数据h1 1106A比较是与f1 402A的二进制的计算散列,DEV模块可以使用跳转表J(o1)408A来查找随机选择并且随机插入的校验函数fc1 406A,使用fc1 406A计算f1 402A的散列,并且将该结果和与fc1 406A相关联的散列表数据h1 1106A比较。如果该结果有利地与散列表数据h1 1106A相比,则可以断定f1 402A未被篡改。对于已定义了校验函数fc的所有函数f 402也完成相同的过程。
如果检测到篡改了运行时可执行文件103R或散列表数据1106,则产生故障模式。默认情况下,故障会启动系统崩溃,优选延迟一段时间或一些指令,以便攻击者很难追踪到导致故障的代码。在一个实施例中,可以使用自定义回调参数cbDEV来推翻故障模式。
安全
图12是图示根据激活和运行时过程的模式和信任级在不同配置中可获得的安全级范围的图。与模式2中拆分激活和运行时可执行文件(例如,拆分成激活可执行文件103A和运行时可执行文件103R)相结合的可信环境中的激活提供最高安全级。
为了所有模式中的最佳安全性,在可信设置中执行激活。这确保证书214仍然保密。如果在工厂设置或特权运行时模式中执行激活可执行文件103A的激活,则可获得中等安全级。在当在运行时首次执行激活DEV保护时的实施例中,获得较低安全性简档。
图13是示出如何使用图13中所述的参数在命令行上指定DEV保护的一个实施例的图。请注意,命令行列表指定modeDEV=0,并且perDEV=50。这指定模式0,并且可执行文件的50%的指定函数将与前缀、校验函数和跳转表条目相关联。“cerDEV”命令行参数指示X.509证书的路径,而secDEV指示安全散列表的读/写路径。类似地,plkDEV和pvkDEV命令行元素分别指示用来签名和验证证书的公钥和私钥的路径。
图14是示出在执行高级加密标准(AES)解密操作的示例性应用程序的源代码中指定的DEV保护的一个实施例的图。源代码行1402包括“SET_PARAMS(addDEV(aes_expand))”以命令软件保护工具来校验aes_expand函数。值得注意的是,该校验在源代码1404中所述的循环之外执行。因此,仅执行一次aes_expand函数的校验,而不是每次在循环中调用aes_expand函数时。类似地,“SET_PARAMS(addDEV(aes_add_round_key)addDEV(aes_inf_shift_rows))”源代码1406也是软件保护的命令,以检查aes_add_round_key和aes_inv_shift_rows函数。同样地,由于该校验是在计算循环之外进行的,因此仅执行一次。然而,再次通过行1408中的“SET_PARAMS(addDEV(aes_inv_mix_sub_colums)addDEV(aes_add_round_key))”语句来校验aes_add_round_key函数。因此,校验两次aes_add_round_key函数的完整性---一次是在执行aes_add_round_key(round_key[10],out)调用之前,一次是在调用之后。还注意到,在处理循环1410之外调用行1408中的“SET_PARAMS(addDEV(aes_inv_mix_sub_colums)addDEV(aes_add_round_key))”语句。最后,经由“SET_PARMS(addDEV(aes_decrypt))”语句1412,校验aes_decrypt函数本身(对aes_expand、aes_add_round_key、aes_inv_shift_rows、aes_inv_mix_sub_columns,和aes_add_round_key函数的调用函数)的完整性。
硬件环境
图15示出了可以被用来实现上述公开的处理元件的示例性计算机系统1500,包括构建/链接处理器102、激活处理器104和运行时处理器106。计算机1502包括处理器1504和存储器,诸如随机存取存储器(RAM)1506。计算机1502可操作地耦合到显示器1522,其在图形用户界面1518B上向用户呈现图像,诸如窗口。计算机1502可以耦合到其他设备,诸如键盘1514、鼠标设备1516、打印机等。当然,本领域技术人员将认识到上述组件的任意组合,或任意多个不同组件、外围设备和其他设备可以与计算机1502一起使用。
通常,计算机1502在存储器1506中存储的操作系统1508的控制下操作,并且与用户连接以接受输入和命令并且通过用户界面(UI)模块1518A呈现结果。虽然UI模块1518B被图示为单独的模块,但是执行UI功能的指令可以驻留或分布在操作系统1508、计算机程序1510中,或者通过专用存储器和处理器实现。计算机1502还实现DEV保护工具链204。在完成之后,应用程序1510利用使用编译器1512生成的关系和逻辑,访问和操纵存储在计算机1502的存储器1506中的数据。计算机1502还可选地包括一个或多个外部通信设备1530,诸如调制解调器、卫星链路、以太网卡或用于与其他计算机通信的其他设备。
在一个实施例中,实现操作系统1508、计算机程序1510和DEV保护工具链1512的指令被有形地体现在计算机可读介质,例如数据存储设备1520中,其可以包括一个或多个固定的或可移动数据存储设备1520,例如zip驱动器、软盘驱动器1524、硬盘驱动器、CD-ROM驱动器、磁带驱动器等。此外,操作系统1508和计算机程序1510包括指令,指令当被计算机1502读取并执行时,使得计算机1502执行本文所述的操作。计算机程序1510和/或操作指令也可以有形地体现在存储器1506和/或数据通信设备1530中,从而制造计算机程序产品或制品。同样地,如本文使用的术语“制品”、“程序存储设备”和“计算机程序产品”旨在涵盖可从任何计算机可读设备或介质访问的计算机程序。
本领域技术人员将认识到,在不脱离本公开的范围的情况下,可以对该配置进行许多改进。例如,本领域技术人员将认识到,可以使用上述组件的任意组合,或任意多个不同组件、外围设备和其他设备。
结论
这结束了本公开的优选实施例的描述。为示例和描述的目的,呈现了优选实施例的上述描述。不旨在穷举或将本公开限制于所公开的精确形式。鉴于上述教导,许多改进和变形都是可能的。旨在权利的范围不受该详细描述限制,而是受所附的权利要求限制。

Claims (20)

1.一种用于生成具有多个函数的可动态验证的应用程序可执行文件的方法,包括:
在构建时:
将随机前缀前置添加到所述应用程序的二进制文件的多个函数f的至少子集;
针对所述多个函数的所述至少子集的每个函数来生成校验函数;
将每个所生成的校验函数注入到所述应用程序的所述二进制文件中的随机位置;
生成跳转表J,所述跳转表J针对所述多个函数的所述子集中的每个函数而具有:
在相应函数和所生成的校验函数之间的映射;
其中,在所述相应函数和所生成的校验函数之间的所述映射与标识符o相关联,并且被随机注入到所述跳转表J中;以及
将对具有所述标识符的所述跳转表的调用注入到所述应用程序的所述二进制文件的引导程序中,以生成所述应用程序的受保护二进制文件。
2.如权利要求1所述的方法,进一步包括:
在链接时,链接所述应用程序的所述受保护二进制文件以生成所述应用程序可执行文件。
3.如权利要求2所述的方法,进一步包括:
在激活时,使用所述引导程序来生成散列表数据。
4.如权利要求3所述的方法,其中,使用所述引导程序来生成散列表数据包括:
接收证书;
验证所述证书;以及
仅在所述证书有效时生成所述散列表数据。
5.如权利要求3所述的方法,其中,仅在所述证书有效时生成所述散列表数据包括:
经由所述跳转表调用每个校验函数fc,以生成散列表数据。
6.如权利要求3所述的方法,进一步包括:
在运行时:
根据所述散列表数据来验证所述应用程序的所述受保护二进制文件。
7.如权利要求1所述的方法,其中,针对所述多个函数的所述至少子集的至少一个函数来生成校验函数包括:
针对所述多个函数的所述至少子集的所选组的每个函数,来自动地生成校验函数。
8.如权利要求7所述的方法,其中,
随机地选择每个所述校验函数。
9.如权利要求8所述的方法,其中,
随机地选择所述多个函数的所述至少子集的所选组。
10.如权利要求9所述的方法,其中,
根据百分比参数,随机地选择所述多个函数的所述至少子集的所选组。
11.如权利要求4所述的方法,进一步包括:
在构建时,将对所述引导程序的调用自动地注入到所述可动态验证的应用程序可执行文件中。
12.如权利要求4所述的方法,进一步包括:
在激活时,由所述可动态验证的应用程序可执行文件的开发人员调用在激活时的引导程序。
13.一种用于生成具有多个函数的可动态验证的应用程序可执行文件的装置,包括:
处理器;
存储器,所述存储器被可通信地耦合到所述处理器,所述存储器存储有处理器指令,所述处理器指令包括用于在构建时用于以下操作的处理器指令:
将随机前缀前置添加到所述应用程序的二进制文件的多个函数f的至少子集;
针对所述多个函数的所述至少子集的至少一个函数,来生成校验函数;
将每个所生成的校验函数注入到所述应用程序的所述二进制文件中的随机位置;
生成跳转表J,所述跳转表J针对所述多个函数的所述子集中的每个函数而具有:
在相应函数和所生成的校验函数之间的映射;
其中,在所述相应函数和所生成的校验函数之间的映射与随机不透明标识符o相关联,并且被随机注入到所述跳转表J中;以及
将对具有所述标识符的所述跳转表的调用注入到所述应用程序的所述二进制文件的引导程序中,以生成所述应用程序的受保护二进制文件。
14.如权利要求13所述的装置,其中,
通过使用所述引导程序生成散列表数据,来激活所述应用程序可执行文件。
15.如权利要求14所述的装置,进一步包括:
第二处理器;
第二存储器,所述第二存储器存储有指令,所述指令包括用于使用所述引导程序生成所述散列表数据的第二处理器指令,包括用于下述操作的第二处理器指令:
接收证书;
验证所述证书;以及
仅在所述证书有效时生成所述散列表数据。
16.如权利要求15所述的装置,其中,用于仅在所述证书有效时生成所述散列表的所述第二处理器指令包括:
用于经由所述跳转表调用每个校验函数fc以生成散列表数据的第二处理器指令。
17.如权利要求15所述的装置,进一步包括:
第三处理器;
第三存储器,所述第三存储器存储有包括用于以下操作的第三处理器指令的指令:
根据所述散列表数据验证所述应用程序的所述受保护二进制文件。
18.如权利要求13所述的装置,其中,用于针对所述多个函数的所述至少子集的至少一个函数来生成校验函数的指令包括用于以下操作的指令:
针对所述多个函数的所述至少子集的所选组的每个函数,来自动地生成校验函数。
19.如权利要求18所述的装置,其中,
随机地选择所述多个函数的所述至少子集的所选组。
20.如权利要求19所述的装置,其中,
根据百分比参数,随机地选择所述多个函数的所述至少子集的所选组。
CN201780035705.9A 2016-05-09 2017-05-09 用于动态可执行验证的方法和装置 Active CN109313677B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662333332P 2016-05-09 2016-05-09
US62/333,332 2016-05-09
US15/589,976 2017-05-08
US15/589,976 US10503931B2 (en) 2016-05-09 2017-05-08 Method and apparatus for dynamic executable verification
PCT/US2017/031652 WO2017196777A1 (en) 2016-05-09 2017-05-09 Method and apparatus for dynamic executable verification

Publications (2)

Publication Number Publication Date
CN109313677A true CN109313677A (zh) 2019-02-05
CN109313677B CN109313677B (zh) 2022-02-11

Family

ID=60243529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780035705.9A Active CN109313677B (zh) 2016-05-09 2017-05-09 用于动态可执行验证的方法和装置

Country Status (7)

Country Link
US (1) US10503931B2 (zh)
EP (1) EP3455764B1 (zh)
CN (1) CN109313677B (zh)
AU (1) AU2017262658B2 (zh)
CA (1) CA3023939C (zh)
MX (1) MX2018013818A (zh)
WO (1) WO2017196777A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112668004A (zh) * 2019-10-16 2021-04-16 武汉斗鱼网络科技有限公司 一种基于llvm的函数校验方法及相关装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10938855B1 (en) * 2017-06-23 2021-03-02 Digi International Inc. Systems and methods for automatically and securely provisioning remote computer network infrastructure
EP3506100A1 (en) * 2017-12-28 2019-07-03 GuardSquare NV Automated software application verification system
WO2019151013A1 (ja) * 2018-02-02 2019-08-08 日本電気株式会社 情報処理装置、情報処理方法及び記録媒体
EP3696698A1 (en) * 2019-02-18 2020-08-19 Verimatrix Method of protecting a software program against tampering
WO2021222306A1 (en) 2020-04-27 2021-11-04 Arris Enterprises Llc Cloud-based dynamic executable verification
US12124565B2 (en) * 2021-03-19 2024-10-22 Adobe Inc. Tamper detection for executable applications
US11615181B2 (en) 2021-03-30 2023-03-28 Netapp, Inc. Methods for managing verification and validation of third-party code and devices thereof
US11586725B2 (en) 2021-03-30 2023-02-21 Netapp, Inc. Methods for managing verification and validation of third-party code and devices thereof
US11799857B2 (en) * 2021-08-31 2023-10-24 Cisco Technology, Inc. Software posture for zero trust access
DE102021214183B3 (de) * 2021-12-13 2023-05-17 Continental Automotive Technologies GmbH Verfahren und Prozessorschaltung zum Absichern eines Codes gegen Manipulationen einer Anwendungssoftware, sowie Kraftfahrzeug-Steuergerät und Kraftfahrzeug mit einem solchen Steuergerät

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070028217A1 (en) * 2005-07-29 2007-02-01 Microsoft Corporation Testing software using verification data defined independently of the testing code
US20090328232A1 (en) * 2008-06-25 2009-12-31 Lockheed Martin Corporation Systems, Methods, and Program Products For Secure Code Execution
CN101650664A (zh) * 2009-06-30 2010-02-17 北京飞天诚信科技有限公司 链接方法和链接器
US20100275034A1 (en) * 2005-02-11 2010-10-28 Simplex Major Sdn, Bhd. Software protection method
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
CN102483790A (zh) * 2009-05-06 2012-05-30 埃德图加拿大公司 利用白盒密码术的联锁二进制保护
US20120222123A1 (en) * 2010-03-19 2012-08-30 Aspect Security Inc. Detection of Vulnerabilities in Computer Systems
CN104573490A (zh) * 2013-10-29 2015-04-29 桂林电子科技大学 Android平台上已安装软件保护方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799186A (en) * 1990-12-20 1998-08-25 Eastman Kodak Company Method and apparatus for programming a peripheral processor with a serial output memory device
US5903718A (en) * 1996-09-16 1999-05-11 International Business Machines Corporation Remote program monitor method and system using a system-under-test microcontroller for self-debug
US6411392B1 (en) * 1998-04-15 2002-06-25 Massachusetts Institute Of Technology Method and apparatus for data hiding in printed images
US7409546B2 (en) * 1999-10-20 2008-08-05 Tivo Inc. Cryptographically signed filesystem
US7650504B2 (en) * 1999-07-22 2010-01-19 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
FR2832824A1 (fr) * 2001-11-28 2003-05-30 St Microelectronics Sa Blocage du fonctionnement d'un circuit integre
WO2004042998A1 (en) * 2002-11-08 2004-05-21 Nokia Corporation Software integrity test in a mobile telephone
JP2004297792A (ja) * 2003-03-13 2004-10-21 Ricoh Co Ltd 画像形成装置及び機能キー割り付け方法
JP2004348677A (ja) * 2003-05-26 2004-12-09 Sony Corp プログラムおよび情報処理方法
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
US7774596B2 (en) * 2005-02-02 2010-08-10 Insyde Software Corporation System and method for updating firmware in a secure manner
US8555061B2 (en) * 2005-05-13 2013-10-08 Microsoft Corporation Transparent code
US9274974B1 (en) * 2005-10-21 2016-03-01 Vmware, Inc. Isolating data within a computer system using private shadow mappings
US7757215B1 (en) 2006-04-11 2010-07-13 Oracle America, Inc. Dynamic fault injection during code-testing using a dynamic tracing framework
US8763115B2 (en) * 2007-08-08 2014-06-24 Vmware, Inc. Impeding progress of malicious guest software
EP2196936A4 (en) * 2007-10-05 2012-05-02 Panasonic Corp SAFE START-UP END UNIT, SAFE START-UP PROCEDURE, SAFE STARTER PROGRAM, RECORDING MEDIA AND INTEGRATED CIRCUIT
JP5206263B2 (ja) * 2008-09-12 2013-06-12 株式会社リコー 情報処理装置、ライセンス判定方法、及びプログラム
US8671077B2 (en) * 2008-11-06 2014-03-11 Deluxe Digital Studios, Inc. Methods, systems and apparatuses for use in updating a portable storage medium
US10339575B2 (en) * 2010-03-05 2019-07-02 International Business Machines Corporation Method and system for provenance tracking in software ecosystems
US20120260106A1 (en) * 2011-04-07 2012-10-11 Apple Inc. System and method for binary layout randomization
US8955149B1 (en) * 2011-12-06 2015-02-10 Amazon Technologies, Inc. Impersonation authorizations
US9098627B2 (en) * 2013-03-06 2015-08-04 Red Hat, Inc. Providing a core dump-level stack trace
US9600397B2 (en) * 2013-08-29 2017-03-21 Stmicroelectronics (Grenoble 2) Sas Dynamic debugging method of a software module and corresponding device
US20150186649A1 (en) * 2013-12-31 2015-07-02 Cincinnati Bell, Inc. Function Fingerprinting
US9292367B2 (en) * 2014-04-08 2016-03-22 Microsoft Corporation Efficient migration of client-side web state
US9110737B1 (en) * 2014-05-30 2015-08-18 Semmle Limited Extracting source code
US9361102B2 (en) * 2014-06-09 2016-06-07 Lehigh University Methods for enforcing control flow of a computer program
US9390260B2 (en) * 2014-06-09 2016-07-12 Lehigh University Methods for enforcing control flow of a computer program
US9378013B2 (en) * 2014-11-14 2016-06-28 Semmle Limited Incremental source code analysis
US10048960B2 (en) * 2014-12-17 2018-08-14 Semmle Limited Identifying source code used to build executable files
MX2017009586A (es) 2015-01-27 2018-04-24 Arris Entpr Llc Ofuscacion para proteccion de medios de transmision y otros flujos de datos.
US9953158B1 (en) * 2015-04-21 2018-04-24 Symantec Corporation Systems and methods for enforcing secure software execution
CN104778923B (zh) * 2015-04-28 2016-06-01 京东方科技集团股份有限公司 一种像素电路及其驱动方法、显示装置
US20160321064A1 (en) * 2015-05-01 2016-11-03 Quixey, Inc. Developer Exchange System
US9953167B2 (en) * 2015-10-12 2018-04-24 Microsoft Technology Licensing, Llc Trusted platforms using minimal hardware resources
US10341409B2 (en) * 2016-05-09 2019-07-02 International Business Machines Corporation Software version control without affecting a deployed container

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100275034A1 (en) * 2005-02-11 2010-10-28 Simplex Major Sdn, Bhd. Software protection method
US20070028217A1 (en) * 2005-07-29 2007-02-01 Microsoft Corporation Testing software using verification data defined independently of the testing code
US20090328232A1 (en) * 2008-06-25 2009-12-31 Lockheed Martin Corporation Systems, Methods, and Program Products For Secure Code Execution
CN102483790A (zh) * 2009-05-06 2012-05-30 埃德图加拿大公司 利用白盒密码术的联锁二进制保护
CN101650664A (zh) * 2009-06-30 2010-02-17 北京飞天诚信科技有限公司 链接方法和链接器
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
US20120222123A1 (en) * 2010-03-19 2012-08-30 Aspect Security Inc. Detection of Vulnerabilities in Computer Systems
CN104573490A (zh) * 2013-10-29 2015-04-29 桂林电子科技大学 Android平台上已安装软件保护方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112668004A (zh) * 2019-10-16 2021-04-16 武汉斗鱼网络科技有限公司 一种基于llvm的函数校验方法及相关装置
CN112668004B (zh) * 2019-10-16 2022-06-21 武汉斗鱼网络科技有限公司 一种基于llvm的函数校验方法及相关装置

Also Published As

Publication number Publication date
EP3455764B1 (en) 2020-01-29
EP3455764A1 (en) 2019-03-20
AU2017262658A1 (en) 2019-01-03
AU2017262658B2 (en) 2020-05-21
WO2017196777A1 (en) 2017-11-16
CN109313677B (zh) 2022-02-11
US20170323120A1 (en) 2017-11-09
CA3023939A1 (en) 2017-11-16
CA3023939C (en) 2021-02-09
US10503931B2 (en) 2019-12-10
MX2018013818A (es) 2019-07-04

Similar Documents

Publication Publication Date Title
CN109313677A (zh) 用于动态可执行验证的方法和装置
Sufatrio et al. Securing android: a survey, taxonomy, and challenges
CN103827880B (zh) 保护非本机代码安全的方法
Backes et al. Appguard–fine-grained policy enforcement for untrusted android applications
US11531751B2 (en) Software integrity checking systems and methods
EP3127034A1 (en) Software protection
US20240291863A1 (en) Systems and Methods for Detecting Phishing-Based Cybersecurity Threats
US10120987B2 (en) Device and method for executing protected iOS software modules
US20160055331A1 (en) Detecting exploits against software applications
Merlo et al. You shall not repackage! demystifying anti-repackaging on android
Bouffard et al. Reversing the operating system of a Java based smart card
Lee et al. Security issues on the CNG cryptography library (Cryptography API: Next Generation)
Randmets An overview of vulnerabilities and mitigations of Intel SGX applications
Zhou et al. Smile: Secure memory introspection for live enclave
Fu et al. A watermark-aware trusted running environment for software clouds
Lee et al. Classification and analysis of security techniques for the user terminal area in the internet banking service
Merlo et al. Armand: Anti-repackaging through multi-pattern anti-tampering based on native detection
Lanet et al. Memory forensics of a java card dump
Mogage et al. Supply chain malware targets SGX: Take care of what you sign
Msgna et al. Secure application execution in mobile devices
Park et al. Two‐stage tamper response in tamper‐resistant software
Cai et al. Research on Dynamic Safe Loading Techniques in Android Application Protection System
dos Santos Mendonça Software Authenticity Protection in Smartphones using ARM Trustzone
Shah Metamorphic viruses with built-in buffer overflow
Wyseur Re-trust: Trustworthy execution of sw on remote untrusted platforms

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