CN109478212B - 保护代码的方法、计算机可读存储介质及系统 - Google Patents
保护代码的方法、计算机可读存储介质及系统 Download PDFInfo
- Publication number
- CN109478212B CN109478212B CN201780047566.1A CN201780047566A CN109478212B CN 109478212 B CN109478212 B CN 109478212B CN 201780047566 A CN201780047566 A CN 201780047566A CN 109478212 B CN109478212 B CN 109478212B
- Authority
- CN
- China
- Prior art keywords
- code
- protected
- source
- file
- conversion
- 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 80
- 238000006243 chemical reaction Methods 0.000 claims abstract description 46
- 230000008569 process Effects 0.000 claims abstract description 41
- 238000000605 extraction Methods 0.000 abstract description 2
- 230000015654 memory Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 230000003068 static effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- 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
-
- 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/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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Virology (AREA)
- Bioethics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
提供了一种用于保护代码的系统和方法。对待保护代码的提取发生在对象到对象的转换期间,并且该代码被伪二进制代码替换。然后提取的待保护代码可以被加密或被模糊化,并被存储在目标文件的一个单独区域中。可以提供先前的源到源的文件转换,以对待保护的代码进行隔离和标记,并加入额外的源代码以处理之后的解密过程。
Description
技术领域
本公开涉及一种用于保护代码的系统和方法,例如通过采用一种促进根据需求对代码解密的构建过程。
背景技术
软件可能受到外部各方的恶意攻击,例如反向工程攻击。鉴于此,已经开发了各种技术来保护软件免受这种攻击。
这种技术的一个例子称为“按需代码解密”。根据该技术,代码的一些元素或“组块”以加密形式传递。这些代码或组块在执行之前被解密,然后被清除。这尤其可以减轻静态分析技术,该技术在不运行代码的情况下检查代码。静态分析技术包括多种变化并且通常涉及反汇编机器代码。
通常,按需加密过程可以大致概括为包括四个步骤。首先,提取待保护代码的相关二进制代码。第二,用伪代码替换待保护的二进制代码的位置。第三,然后将提取的二进制代码加密并添加到二进制的一个数据区域。然后使得按需解密过程具有正确的信息以供使用,以这样的方式最后确定最终二进制。通常,这些步骤均在链接过程完成之后进行,并由积分器执行。
附图说明
图1示出了用于实现优选实施例的硬件基础设施;
图2A示出了根据一种已知技术的编译过程;
图2B示出了根据优选实施例的编译过程;
图3示出了优选实施例的编译过程中的源到源转换;
图4示出了优选实施例的编译过程中的对象到对象转换;
图5示出了按需解密过程的流程图;
图6显示了处理代码的区域,这些区域将被排除,不作为重定位方向;
图7示出了在按需代码解密期间掩码的生成,该掩码将被应用于保护被排除的区域;和
图8示出了不影响重定位地址的按需代码解密过程。
具体实施方式
总的来说,提供了一种用于保护代码的系统和方法。对待保护代码的提取发生在对象到对象的转换期间,并且该代码被伪二进制代码替换。然后提取的待保护代码可以被加密或被模糊化,并被存储在目标文件的一个单独区域中。可以提供先前的源到源的文件转换,以对待保护的代码进行隔离和标记,并加入额外的源代码以处理之后的解密过程。
在本公开的一些方面,提供了一种方法,例如一种用于保护代码的方法,如用于保护代码的计算机实现的方法。该方法包括执行对象到对象文件转换。该对象到对象转换包括在一个输入目标文件内识别待保护的代码以进行加密,并提取被识别的待保护代码。该对象到对象转换还包括在所述输入目标文件内用伪代码替换被识别的待保护代码,以生成第一个输出目标文件,和将待保护的代码注入第二个输出目标文件中。在注入第二个输出目标文件之前,可以使用另一种技术对待保护的代码进行加密或模糊化。
通过执行这种对象到对象转换,可以提供一种方法,该方法可以避免在后期编译过程执行解密的要求。例如,与在生成最终二进制时由积分器执行的链接阶段依赖加密的方法相比,本公开的方法可以允许在不依赖于积分器和源代码及目标代码生成过程的完全协调的情况下使代码模糊化。在许多情况下,这是一种更可靠的解决方案,其中积分器独立地运行至早期的编码/编译过程。通过保持对接近代码源的模糊过程的控制,可以实现可靠性和安全性的改进。可以选择伪代码以类似于真实代码,从而使得加密过程更难以检测。所识别的待保护代码可以被注入到第二个输出目标文件的一个数据区域中,这可以进一步帮助模糊其真实性质。
在一些实施例中,第一个输出目标文件和第二个输出目标文件可以合并到一个最终输出目标文件中。这可以允许任何输入目标文件和输出目标文件之间的一对一关系,使得需要调整后续处理以考虑对象到对象转换期间的修改的需求最小化。
在一些实施例中,该方法还可以包括,在该对象到对象转换之前执行源到源转换。该源到源转换可以包括在输入源文件中标记待保护的代码。该源到源转换还可以包括向输入源文件提供附加代码,以提供用于之后解密操作的指令。此外,该源到源转换还可以包括隔离要保护的代码。以这种方式,该源到源转换可以允许集成对象到对象转换的必要信息,而无需特殊的操作员动作。可选择性地或另外地,可以向原始源代码提供适当的信息。
在一些实施例中,该对象到对象的转换还可以包括:在所述输入目标文件中识别重定位方向;在被伪代码替换的内容中将重定位方向排除。重定位方向可以是重定位指向的地址。通过从待保护的代码中排除这些重定位方向,在链接阶段期间的重定位过程可能不受该方法的影响。实际上,这可以允许待保护的代码在链接器/积分器处调用外部函数,尽管其因为在该阶段被加密因此对链接器/积分器不可见。在一些实施例中,对象到对象变换可以包括改变一个或多个重定位方向的目标,而不是排除替代重定位方向。这可以确保解密代码的一致性。
在本公开的一些方面,提供了一种计算机程序产品,包括用于执行上述方法的计算机可执行指令。在另一些方面,提供了一种用于执行上述方法的系统。
现在参考附图通过说明的方式描述一些具体实施例,其中相同的附图标记表示相同的特征。
图1示出了计算设备100的一个实施例的框图,在该计算设备100内可以执行用于使该计算设备执行本文所讨论的任何一个或多个方法的一组指令。在替代实施例中,该计算设备可以被连接(例如,联网)到局域网(LAN)、内联网、外联网或因特网中的其他机器。该计算设备可以在客户端-服务器网络环境中以服务器或客户端机器的能力操作,或者作为对等(或分布式)网络环境中的对等机器来操作。该计算设备可以是个人计算机(PC)、平板计算机、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥,或任何能够执行一组指令(序列的或其他)的机器,该指令指定该机器要采取的动作。此外,虽然仅示出了单个计算设备,但是术语“计算设备”还应被视为包括单独或联合执行一组(或多组)指令,以执行本文所讨论的任何一个或多个方法的任何机器(例如,计算机)的集合。
该示例计算设备100包括一个处理设备102,一个主存储器104(例如只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)的动态随机存取存储器(DRAM)等)、一个静态存储器106(例如闪存、静态随机存取存储器(SRAM)等),以及通过总线130彼此通信的辅助存储器(例如数据存储设备118)。 。
处理设备102表示一个或多个通用处理器,例如微处理器、中央处理单元等。更具体地,处理设备102可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现其他指令集的处理器或实现指令集组合的处理器。处理设备102还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备102被配置为执行本文所讨论的操作和步骤的处理逻辑(指令122)。
计算设备100还可以包括一个网络接口设备108。该计算设备100还可以包括一个视频显示单元110(例如液晶显示器(LCD)或阴极射线管(CRT))、一个字母数字输入设备112(例如键盘或触摸屏)、一个光标控制设备114(例如鼠标或触摸屏)和一个音频设备116(例如扬声器)。
数据存储设备118可以包括一个或多个机器可读存储介质(或者更具体地,一个或多个非暂时性计算机可读存储介质)128,其上存储有一个或多个指令集122,其包含这里描述的任何一个或多个方法或功能。指令122还可以在计算机系统100执行期间完全或至少部分地驻留在主存储器104内和/或处理设备102内,主存储器104和处理设备102也构成计算机可读存储器介质。
为了比较的目的,图2A示出了已知软件构建过程的一般步骤。这里,源文件“.c”由编译器编译以创建目标文件“.o”。然后,目标文件由归档器归档以形成库“.lib”,这些库又由链接器(有时称为积分器)链接以形成最终的二进制文件“.bin”。每一个编译器、归档器和积分器可以在如图1中描述的计算设备100上实现。归档器、编译器和积分器可以各自在独立的计算设备100上实现,或者任何归档器、编译器和积分器的组合可以共享一个实现其组合的计算设备。例如,编译器和归档器可以集成在第一计算设备100上,并且积分器可以在第二计算设备100上实现。在提供多个计算设备100的情况下,这些计算设备可以通过任何适当的通信网络进行通信。
在许多传统场景中,编译器和归档器可以归第一实体控制,而第二实体可以通过链接器/积分器的实现聚集来自多个源的库。图2A中的框210示出了在第一实体控制下的实体。因此,当生成二进制.bin文件时,多个实体已经访问该代码,增加了潜在的安全风险以及实体之间协调不完善的稳定性风险。本公开提供了一种减轻这种风险的构建过程。特别是,此构建过程支持按需代码解密。这种构建过程在图2B中示出。
与图2A相比,图2B示出了两个额外的构建步骤。首先,“s2s”源到源转换将输入源文件.c转换为输出源文件.c。然后由编译器编译以形成符合图2A的过程的目标文件。然后,该目标文件是一个标记为“补丁”的用于对象到对象变换的输入目标文件,其生成一个或多个输出目标文件。
参考图3可以理解源到源的转换,图3示出了这种过程的一个实施例。特别是,该源到源转换隔离并用标记对待保护的代码进行标记。操作“fibWrapped”标识此代码。另外,在该转换期间,并入了附加代码以帮助处理解密操作。在一些实施例中,可以使用替代的加密过程对待保护的代码模糊化,在这种情况下,解密操作将由合适的替代方案替换。
图4示出了对象到对象转换的实施例。这里输入目标文件fib.s2s.o包含标记“fibWrapped”和“fibWrappedEnd”,允许对象到对象转换识别待保护的代码。此代码被提取并在目标文件fib.s2s.o中被伪代码替代。可以选择伪代码以类似于真实代码,并且可以是例如垃圾代码、真实代码或看似有意义的代码。在其他实施例中,伪代码可以是随机代码。修改的目标文件fib.s2s.o可以被认为是第一个输出目标文件。
此外,对象到对象的转换可以生成中间源文件fib.shellcode.c。该中间源文件通过使用与源到源转换期间注入的解密操作相匹配的加密操作和给予的秘密密钥,对待保护的代码加密。秘密密钥可以是预定义的,或者可以被定义为使得其可以在对象到对象转换期间或在其他时间被导出。加密操作可以用可能较弱的模糊处理进行替换,以便使开销和潜在的性能损失最小化。
在对象到对象转换期间编译中间源文件,以生成第二个输出目标文件,在图4中被称为“fib.shellcode.o”。第二个目标文件在一个数据区域中携带加密的或其模糊化的待保护代码。
随后可以合并第一个和第二个目标文件以形成单个合并的输出目标文件,尽管不是必须在所有实施例中都需要此合并。以这种方式,可以在用作对象到对象变换的输入目标文件和该处理输出的目标文件之间实现一对一的关系。目标文件合并的方法将根据工具链而变化。在一些示例中,可以开发COFF格式解析器,并且该过程可以涉及读取两个目标文件,根据Microsoft COFF规范对其进行合并,并将合并文件写回磁盘。在其他实施例中,可能存在用于执行此合并的工具链提供的工具。
然后,可以将由图2B、图3和图4的过程生成的目标文件传递给积分器/链接器以进行链接。积分器不需要采取进一步措施来确保按需解密是可行的,并且不需要执行任何后链接过程。此外,由于传递给积分器的代码已经被加密,因此禁止在此阶段对库进行静态分析,提高了代码的安全性。
图5示出了在运行软件时随后执行的按需解密的过程。首先,在步骤s51获得最终的.bin二进制包装器,和可以被恢复的相关功能代码(即已被保护的代码)。这在步骤s52解密,然后在步骤s53修补到其源位置,替换位于那里的伪代码。然后在步骤s54运行程序。
随后,在步骤s55取消修补功能代码,再次从静态分析中使该代码模糊化。
在修补步骤s53期间,可以保留某些区域,特别是在加密完成之后被链接器修改的区域。下面将参考图6至8更详细地描述实施例的过程。在链接步骤,该链接器修改代码,将CALL指令中的Offsets更新为相关的目标函数。由于这不能在加密代码中预先计算,在以下参考图6到图8描述的这种方法中,可以预期,这些区域在加密之前被识别,然后被保存,使得修补后的结果是适当、正确的代码。另一种方法可能涉及模糊处理OBF的过程及其对称的UNOBF,其将与链接器一起工作,使得LINK(区域)= UNOBF(LINK(OBF(区域));这种替代方案可以避免保留区域的要求。
如上所述,一些优选实施例的进一步细节在图6至图8中示出。此处指出,重定位过程可能需要未改变的代码。这种重定位过程可以在链接过程中以及加载程序时发生。为了避免干扰该过程,在用于重定位方向的对象到对象转换的区域中,可以排除伪代码的替换。特别地,用于重定位方向的区域可以是重定位命令所针对的区域。
图6示出了一个实施例。输入目标文件中的原始“普通”代码包括两个突出显示的区域,这两个区域是重定位操作的目标。伪代码被修改,使得这些区域不被替换,并且这些区域中的值保持不变。
然后可以生成掩码,以确保在重定位期间提供给该区域的任何数据在运行时的按需解密过程期间不被覆盖。可以通过比较(解密的)待保护代码和输出目标文件内的等效区域来生成该掩码。这在图7中示出;一个XOR操作标识两组代码的相同位置,从而指示未进行替换的位置。
在链接和加载过程中发生重定位,如图8所示。然后使用掩码,以确保在按需解密过程中,通过禁止将已被保护的代码修补到为此类重定位保留的区域,这些重定位仍然有效。
上述各种方法可以由计算机程序实现。该计算机程序可以包括计算机代码,该计算机代码被布置成指示计算机执行上述各种方法中的一个或多个功能。可以将计算机程序和/或用于执行这些方法的代码提供给一个或多个计算机可读介质上的一个装置,例如一台计算机,或者更一般地,一个计算机程序产品。计算机可读介质可以是暂时的或非暂时的。一个或多个计算机可读介质可以是,例如电子、磁、光、电磁、红外或半导体系统,或用于数据传输的传播介质,例如用于通过因特网下载代码。或者,一个或多个计算机可读介质可以采用一个或多个物理计算机可读介质的形式,例如半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘,例如CD-ROM,CD-R/W或DVD。
在一个实施例中,这里描述的模块、组件和其他特征(例如与图1相关的控制单元110)可以实现为分立组件或集成在诸如ASICS、FPGA、DSP或类似设备的硬件组件的功能中,作为个性化服务器的一部分。
“硬件组件”是能够执行某些操作的有形(例如非暂时性)物理组件(例如一组单个或多个处理器),该物理组件可以以特定物理方式配置或布置。硬件组件可以包括永久配置为执行某些操作的专用电路或逻辑。硬件组件可以是或包括专用处理器,例如现场可编程门阵列(FPGA)或ASIC。硬件组件还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路。
因此,短语“硬件组件”应该被理解为包含可以物理构造、永久配置(例如硬接线)或临时配置(例如编程),以便以某种方式操作或执行所描述的某些操作的有形实体。
此外,模块和组件可以实现为硬件设备内的固件或功能电路。此外,模块和组件能够以硬件设备和软件组件的任何组合来实现,或者仅以软件(例如存储在或以其他方式体现在机器可读介质或传输介质中的代码)来实现。
除非另外特别说明,否则从以下讨论中,应当理解在整个说明书中,利用诸如“接收”、“确定”、“比较”、“启用”、“维护”、“识别”等术语,是指计算机系统或类似电子计算设备的动作和过程,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据,操纵和转换为类似地表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内物理量的数据。
应理解,以上说明旨在说明性而并非限制性的。在阅读和理解以上说明书后,许多其他实施方式对于本领域技术人员而言将是显而易见的。尽管已经参考特定实施例描述了本发明,但是需要认识到本发明不限于所描述的实施例,而可以在所附权利要求的精神和范围内通过修改和变更来实践。
相应的,说明书和附图应被视为具有说明性意义而并非限制性意义。因此,本发明的范围应该参考所附权利要求以及这些权利要求所赋予的等同物的全部范围来确定。
Claims (15)
1.一种用于保护代码的方法,包括执行对象到对象文件转换,所述对象到对象转换包括:在一个输入目标文件内识别待保护的代码以进行加密;
提取被识别的待保护代码;
在所述输入目标文件内用伪垃圾代码替换被识别的待保护代码,以生成第一个输出目标文件;和
将所述待保护的代码加入第二个输出目标文件,使得在编译过程中避免解密,其中在加入所述第二个输出目标文件之前对所述待保护的代码进行加密或模糊化。
2.根据权利要求1所述的方法,还包括将所述第一个输出目标文件和所述第二个输出目标文件合并到一个最终目标文件中。
3.根据权利要求1或2所述的方法,在所述对象到对象转换之前,还包括执行一个源到源转换,所述源到源转换包括:
在输入源文件中标记所述待保护的代码;和
为所述输入源文件提供附加代码,用于为之后的解密操作提供指令。
4.根据权利要求3所述的方法,其中,所述源到源转换还包括隔离所述待保护的代码。
5.根据前述权利要求中任一项所述的方法,其中,所述对象到对象转换还包括:
在所述输入目标文件中识别重定位方向;
将所述重定位方向排除出伪垃圾代码替换。
6.根据前述权利要求中任一项所述的方法,其中,所述伪垃圾代码被选择为类似于真实代码。
7.根据前述权利要求中任一项所述的方法,其中,所述对象到对象转换还包括对所述待保护的代码加密。
8.一种计算机可读存储介质,其上存储有计算机指令,当该计算机指令被处理器执行时实现权利要求1所述的方法。
9.一种用于保护代码的系统,所述系统包括一个处理器,所述处理器被布置为执行一个对象到对象的文件转换,所述对象到对象转换包括:
在一个输入目标文件内识别待保护的代码以进行加密;
提取被识别的待保护代码;
在所述输入目标文件内用伪垃圾代码替换所述被识别的待保护代码,以生成第一个输出目标文件;和
将所述待保护的代码加入第二个输出目标文件,使得在编译过程中避免解密,其中在加入所述第二个输出目标文件之前对所述待保护的代码进行加密或模糊化。
10.根据权利要求9所述的系统,其中,所述处理器还被布置为将所述第一个输出目标文件和所述第二个输出目标文件合并到一个最终目标文件中。
11.根据权利要求9或10所述的系统,其中,所述处理器还被布置为在所述对象到对象变换之前,执行一个源到源转换,所述源到源转换包括:
在输入源文件中标记待保护的代码;和
为所述输入源文件提供附加代码,用于为之后的解密操作提供指令。
12.根据权利要求11所述的系统,其中所述源到源转换还包括隔离所述待保护的代码。
13.根据权利要求9至12中任一项所述的系统,其中,所述对象到对象转换还包括:
在所述输入目标文件中识别重定位方向;
将所述重定位方向排除出伪垃圾代码替换。
14.根据权利要求9至13中任一项所述的系统,其中,所述伪垃圾代码被选择为类似于真实代码。
15.根据权利要求9至14中任一项所述的系统,其中,所述对象到对象转换还包括对所述待保护的代码加密。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16305797.9 | 2016-06-29 | ||
EP16305797.9A EP3264307A1 (en) | 2016-06-29 | 2016-06-29 | On demand code decryption |
PCT/EP2017/066198 WO2018002258A1 (en) | 2016-06-29 | 2017-06-29 | On demand code decryption |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109478212A CN109478212A (zh) | 2019-03-15 |
CN109478212B true CN109478212B (zh) | 2023-09-15 |
Family
ID=56896482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780047566.1A Active CN109478212B (zh) | 2016-06-29 | 2017-06-29 | 保护代码的方法、计算机可读存储介质及系统 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11336448B2 (zh) |
EP (2) | EP3264307A1 (zh) |
CN (1) | CN109478212B (zh) |
TW (1) | TWI695287B (zh) |
WO (1) | WO2018002258A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101688814B1 (ko) * | 2016-07-11 | 2016-12-22 | (주)케이사인 | 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법 |
CN110147655A (zh) * | 2019-03-28 | 2019-08-20 | 江苏通付盾信息安全技术有限公司 | 应用程序的安全防护系统及方法 |
CN113268736A (zh) * | 2021-06-24 | 2021-08-17 | 深圳平安智汇企业信息管理有限公司 | 一种信息处理方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6684389B1 (en) * | 1999-08-05 | 2004-01-27 | Canon Kabushiki Kaisha | Compiler that decrypts encrypted source code |
WO2007063433A2 (en) * | 2005-10-17 | 2007-06-07 | Nxp B.V. | Program executable image encryption |
CN101763280A (zh) * | 2008-09-30 | 2010-06-30 | Ics三重自动化软件有限公司 | 编译模型 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463538B1 (en) * | 1998-12-30 | 2002-10-08 | Rainbow Technologies, Inc. | Method of software protection using a random code generator |
JP2003280755A (ja) * | 2002-03-25 | 2003-10-02 | Nec Corp | 自己復元型プログラム、プログラム生成方法及び装置、情報処理装置並びにプログラム |
US7383583B2 (en) * | 2004-03-05 | 2008-06-03 | Microsoft Corporation | Static and run-time anti-disassembly and anti-debugging |
TWI405094B (zh) * | 2005-11-28 | 2013-08-11 | Ibm | 防止未授權獲取資訊之系統及其方法 |
US8756434B2 (en) * | 2011-04-08 | 2014-06-17 | Apple Inc. | System and method for executing an encrypted binary from a memory pool |
KR101328012B1 (ko) * | 2013-08-12 | 2013-11-13 | 숭실대학교산학협력단 | 애플리케이션 코드 난독화 장치 및 그 방법 |
US9639673B2 (en) * | 2014-06-17 | 2017-05-02 | Apple Inc. | Protecting software through a fake cryptographic layer |
US11234105B2 (en) * | 2014-09-29 | 2022-01-25 | Visa International Service Association | Methods and systems for asset obfuscation |
KR102000861B1 (ko) * | 2015-01-27 | 2019-07-16 | 애리스 엔터프라이지즈 엘엘씨 | 스트리밍 미디어 및 다른 데이터 흐름들의 보호를 위한 난독화 |
EP3057019A1 (en) * | 2015-02-13 | 2016-08-17 | Thomson Licensing | Method and device for protecting an application and method and device for executing a protected application thus protected |
EP3206148A1 (en) * | 2016-02-12 | 2017-08-16 | ABB Schweiz AG | Secure code optimization method and system |
US20170357815A1 (en) * | 2016-06-10 | 2017-12-14 | Lior Malka | Code obfuscation and unique instances |
-
2016
- 2016-06-29 EP EP16305797.9A patent/EP3264307A1/en not_active Withdrawn
-
2017
- 2017-06-26 TW TW106121271A patent/TWI695287B/zh active
- 2017-06-29 WO PCT/EP2017/066198 patent/WO2018002258A1/en unknown
- 2017-06-29 US US16/313,273 patent/US11336448B2/en active Active
- 2017-06-29 EP EP17734089.0A patent/EP3479275A1/en active Pending
- 2017-06-29 CN CN201780047566.1A patent/CN109478212B/zh active Active
-
2022
- 2022-04-19 US US17/723,998 patent/US12113899B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6684389B1 (en) * | 1999-08-05 | 2004-01-27 | Canon Kabushiki Kaisha | Compiler that decrypts encrypted source code |
WO2007063433A2 (en) * | 2005-10-17 | 2007-06-07 | Nxp B.V. | Program executable image encryption |
CN101288083A (zh) * | 2005-10-17 | 2008-10-15 | Nxp股份有限公司 | 程序可执行映像加密 |
CN101763280A (zh) * | 2008-09-30 | 2010-06-30 | Ics三重自动化软件有限公司 | 编译模型 |
Also Published As
Publication number | Publication date |
---|---|
US20220360442A1 (en) | 2022-11-10 |
TWI695287B (zh) | 2020-06-01 |
CN109478212A (zh) | 2019-03-15 |
EP3479275A1 (en) | 2019-05-08 |
WO2018002258A1 (en) | 2018-01-04 |
US12113899B2 (en) | 2024-10-08 |
US11336448B2 (en) | 2022-05-17 |
EP3264307A1 (en) | 2018-01-03 |
TW201804349A (zh) | 2018-02-01 |
US20190158286A1 (en) | 2019-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11244075B2 (en) | Integrity of on demand code decryption | |
US12113899B2 (en) | On demand code decryption | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
KR101623096B1 (ko) | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 | |
EP3126973A1 (en) | Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine | |
KR101861341B1 (ko) | 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법 | |
US20150095653A1 (en) | Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package | |
WO2016135729A1 (en) | A method to identify known compilers functions, libraries and objects inside files and data items containing an executable code | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
CN111240654B (zh) | 一种Python代码加固保护的方法及其系统 | |
CN104866739A (zh) | 安卓系统中应用程序加密方法及系统 | |
JP2022009556A (ja) | ソフトウェアコードをセキュアにするための方法 | |
JP7242675B2 (ja) | コンパイル装置及び方法 | |
CN110472425A (zh) | 基于Mono的Unity插件加密方法、存储介质 | |
CN112035803B (zh) | 一种基于Windows平台软件的保护方法及装置 | |
KR102529826B1 (ko) | 난독화 장치 및 방법 | |
KR20180028666A (ko) | 역공학 방지 방법 및 장치 | |
KR20170094737A (ko) | 코드 보호 방법 및 시스템 | |
CN108664796B (zh) | 一种so文件保护方法及装置 | |
CN114139117A (zh) | 应用程序加固方法、装置、电子设备及存储介质 | |
US9965621B2 (en) | Program protection device | |
JP6752347B1 (ja) | 情報処理装置、コンピュータプログラム及び情報処理方法 | |
JP2007041777A (ja) | 言語処理方法 | |
CN105956488A (zh) | 一种基于防止dex文件转存的apk文件保护方法及装置 |
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 |