CN106055934B - 一种基于veh的代码保护方法和装置 - Google Patents

一种基于veh的代码保护方法和装置 Download PDF

Info

Publication number
CN106055934B
CN106055934B CN201610332774.3A CN201610332774A CN106055934B CN 106055934 B CN106055934 B CN 106055934B CN 201610332774 A CN201610332774 A CN 201610332774A CN 106055934 B CN106055934 B CN 106055934B
Authority
CN
China
Prior art keywords
code
protected
code segment
unit
encrypted
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
CN201610332774.3A
Other languages
English (en)
Other versions
CN106055934A (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.)
FUJIAN DUODUOYUN TECHNOLOGY Co.,Ltd.
Original Assignee
Fuzhou Gain Network Technology Co Ltd
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 Fuzhou Gain Network Technology Co Ltd filed Critical Fuzhou Gain Network Technology Co Ltd
Priority to CN201610332774.3A priority Critical patent/CN106055934B/zh
Publication of CN106055934A publication Critical patent/CN106055934A/zh
Application granted granted Critical
Publication of CN106055934B publication Critical patent/CN106055934B/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/106Enforcing content protection by specific content processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于VEH的代码保护方法和装置,所述方法包括以下步骤:首先对第一进程中待保护的代码段添加标识信息;而后获取待保护的代码段并进行加密,得到加密代码,并将加密代码保存在第二进程;而后对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断;而后第二进程接收第一进程发送的第一信号,并对加密代码进行解密,将第一信号对应的待保护的代码段发送至第一进程;而后第一进程在其对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。所述方法可以有效增强第一进程和第二进程之间的依赖性,提高了破解难度。

Description

一种基于VEH的代码保护方法和装置
技术领域
本发明涉及计算机软件反破解领域,特别涉及一种基于VEH的代码保护方法和装置。
背景技术
随着科学技术的发展,软件的应用也越来越广。目前,市面上的软件已被一些常用的破解工具所破解,安全性若。为此,需要对软件程序中关键代码进行处理,使其在逆向工具不能正常识别代码,加大破解难度。
现有软件相关的反破解技术主要包括:代码虚拟化、设置花指令以及代码压缩加密等。然而,这些反破解技术都存在着不足。以代码虚拟化为例,其在大强度保护代码的同时,也会很大程度地增加原程序的占用,降低代码执行效率,增大对内存的消耗,浪费系统资源。再比如设置花指令,由于所设置的花指令还是可以通过分析,逆向还原出源代码,因而这种方法安全系数不是很高。
发明内容
为此,需要提供一种基于VEH的代码保护的技术方案,用以解决现有的软件程序反破解方法资源占用大、反静态分析能力弱、安全系数低等问题。
为实现上述目的,发明人提供了一种基于VEH的代码保护方法,所述方法包括以下步骤:
对第一进程中待保护的代码段添加标识信息;
获取待保护的代码段并进行加密,得到加密代码,并将加密代码保存在第二进程;
对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断;
第二进程接收第一进程发送的第一信号,并对加密代码进行解密,将第一信号对应的待保护的代码段发送至第一进程,所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号;
第一进程在其对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。
进一步地,所述方法还包括:
判断第一进程中是否存在具有标识信息的待保护的代码段,若是则执行步骤“获取待保护的代码段并进行加密,得到加密代码,并将加密代码保存在第二进程”,而后对第一进程代码进行加壳处理;否则对第一进程代码进行加壳处理。
进一步地,所述加壳处理包括VMP加壳处理或TMD加壳处理。
进一步地,所述步骤“第一进程在其对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间”之后还包括步骤:
继续执行指定位置的代码,所述指定位置的代码为待保护的代码段的下一行代码。
进一步地,所述异常中断包括除0异常和定义异常,所述除0异常对应的预处理包括:执行除法时,将除数设置为0;所述定义异常对应的预处理包括:将定义汇编码转换为对应的字节码。
发明人还提供了一种基于VEH的代码保护装置,所述装置包括第一进程和第二进程,所述第一进程包括标识信息添加单元、获取单元、加密单元、预处理单元、执行单元,所述第二进程包括接收单元、解密单元、发送单元;
所述标识信息添加单元用于对第一进程中待保护的代码段添加标识信息;
所述获取单元用于获取待保护的代码段,所述加密单元用于对获取到的待保护的代码段进行加密,得到加密代码,并将加密代码保存在第二进程;
所述预处理单元用于对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断;
所述接收单元用于接收第一进程发送的第一信号,所述解密单元用于对加密代码进行解密,所述发送单元用于将第一信号对应的待保护的代码段发送至第一进程,所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号;
所述执行单元用于在第一进程对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。
进一步地,所述第一进程还包括判断单元和加壳单元,所述判断单元用于判断第一进程中是否存在具有标识信息的待保护的代码段,若是则获取单元用于获取待保护的代码段,加密单元对获取到的待保护的代码段进行加密,得到加密代码,并将加密代码保存在第二进程,而后加壳单元对第一进程代码进行加壳处理;否则加壳单元用于对第一进程代码进行加壳处理。
进一步地,所述加壳处理包括VMP加壳处理或TMD加壳处理。
进一步地,所述执行单元还用于继续执行指定位置的代码,所述指定位置的代码为待保护的代码段的下一行代码。
进一步地,所述异常中断包括除0异常和定义异常,所述预处理单元用于执行除法时,将除数设置为0;或者,所述预处理单元用于将定义汇编码转换为对应的字节码。
上述技术方案所述的基于VEH的代码保护方法和装置,所述方法包括以下步骤:首先对第一进程中待保护的代码段添加标识信息;而后获取待保护的代码段并进行加密,得到加密代码,并将加密代码保存在第二进程;而后对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断;而后第二进程接收第一进程发送的第一信号,并对加密代码进行解密,将第一信号对应的待保护的代码段发送至第一进程,所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号;而后第一进程在其对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。将第一进程中待保护的代码段或数据进行加密,提高了程序反静态分析的能力。且只有在程序运行时才对代码和数据进行解密,一方面保证了程序正常运行和访问数据,另一方面不会增加源程序的占用空间。同时,将加密的代码放在第二进程中,当第一进程需要访问代码数据时,才从第二进程获得,如果此时第二进程未开启,则造成第一进程奔溃。增强了第一进程和第二进程之间的依赖性,提高了破解难度。
附图说明
图1为本发明一实施方式涉及的基于VEH的代码保护方法的流程图;
图2为本发明一实施方式涉及的基于VEH的代码保护装置的示意图;
附图标记说明:
101、第一进程;
102、第二进程;
111、标识信息添加单元;
112、获取单元;
113、加密单元;
114、预处理单元;
115、执行单元;
116、接收单元;
117、解密单元;
118、发送单元;
119、判断单元;
120、加壳单元;
121、内存空间。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1,为本发明一实施方式涉及的基于VEH的代码保护方法的流程图。所述方法可以应用于对软件关键代码段进行保护,有效提高软件代码反静态分析能力,所述方法包括以下步骤:
首先进入步骤S101对第一进程中待保护的代码段添加标识信息。具体地,可以在待保护的代码段的开头和结尾处分别添加ProtectBegin、ProtectEnd两个宏,分别代表保护开始和保护结束。标识信息为识别待保护的代码的标识,在其他实施方式中,还可以为自定义的字符串等。
而后可以进入步骤S102获取待保护的代码段并进行加密,得到加密代码,并将加密代码保存在第二进程。优选的,在步骤S102之前还可以进入步骤“判断第一进程中是否存在具有标识信息的待保护的代码段”,若是则执行步骤S102,并对第一进程代码进行加壳处理;否则对第一进程代码进行加壳处理。
若第一进程中不存在标识信息的待保护的代码段,说明无需对第一进程进行特殊保护处理,因而可以对第一进程代码进行加壳处理,加壳处理其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩,改变其原来的特征码,隐藏一些字符串等等,使一些资源编辑软件不能正常打开或者修改。通过在线编译及加壳处理,破解者破解采用上述方法加密的不同软件的PE结构均是不同的,大大提高了软件的破解难度。优选的,所述加壳处理包括VMP加壳处理或TMD加壳处理。
若第一进程中存在标识信息的待保护的代码段,则获取待保护的代码段并进行加密,得到加密代码,并对第一进程代码进行加壳处理。在本实施方式中,第一进程为.exe格式的可执行程序。“获取待保护的代码段并进行加密,得到加密代码”具体包括:提取第一进程中待保护的代码段,使用加密算法进行加密,并保存为.dat文件。而后将加密代码保存至第二进程,以便后续调用。简言之,加壳处理可以根据开发者的实际需要决定是否采用,加壳处理可以通过加壳工具来实现。
而后可以进入步骤S103对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断。所述异常中断包括除0异常和定义异常,所述除0异常对应的预处理包括:执行除法时,将除数设置为0;所述定义异常对应的预处理包括:将定义汇编码转换为对应的字节码。定义异常包括int1异常和in3异常,例如int1其对应的汇编码为_asm{int 1},则将该汇编码转换为字节码为0xCD 0x01,当执行待保护的代码段时,由于访问无效内存地址将发生异常中断。再比如int3异常,其对应汇编码为_asm{int3},转换为字节码为0xCC。当执行待保护的代码段时,由于int3是windows系统自带的用于调试进程的断点,将发生异常中断。除0异常当执行除法时,由于除数为0,会发生异常中断。
而后可以进入步骤S104第二进程接收第一进程发送的第一信号,并对加密代码进行解密,将第一信号对应的待保护的代码段发送至第一进程。所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号。由于第一进程中待保护的代码段经过预设处理,因而在运行这些代码段时会发生异常,第一进程发送第一信号至第二进程。第二进程接收第一进程发送的第一信号后,会对加密代码进行解密,解密后得到加密前的源程序,第二进程将加密前的源程序发送至第一进程。在一些实施例中,需要保护的代码段往往为多个,而生成的加密文件往往只有一个,因而第二进程会先对加密文件进行解密,并将解密后第一信号对应的待保护的代码段发送至第一进程。例如第一进程中有A、B、C三个待保护的代码段,它们经过加密后保存为一个加密文件并存储于第二进程中,当运行到第一进程中的A代码段时,发送异常中断,并发送第一信号至第二进程,第二进程对加密文件进行解密,得到A、B、C三个待保护的代码段的源程序,并将A代码段的源程序发送至第一进程。
而后进入步骤S105第一进程在其对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。在本实施方式中,所述步骤S105之后还包括步骤:继续执行指定位置的代码,所述指定位置的代码为待保护的代码段的下一行代码。例如待保护的代码段在第一进程代码中的位置为第40行至第50行代码,当第一进程运行至第40行代码时,会从第二进程获取解密后的待保护的代码段的源代码,并新建内存空间进行运行,当运行完成后,将释放新建的待保护的代码段对应的内存空间,并返回运行第51行代码,直至下一个带保护的代码段。
软件在实际应用过程中,除了待保护的代码段位置,其他代码段位置也可能会发生异常。因而在一些实施例中,所述方法还包括步骤:判断异常中断是否来自待保护的代码段处,若是则执行步骤S104,否则不执行步骤S104。
以及发明人还提供了一种基于VEH的代码保护装置,请参阅图2,为本发明一实施方式涉及的基于VEH的代码保护装置的示意图。所述装置包括第一进程101和第二进程102,所述第一进程包括标识信息添加单元111、获取单元112、加密单元113、预处理单元114、执行单元115,所述第二进程包括接收单元116、解密单元117、发送单元118;
所述标识信息添加单元111用于对第一进程中待保护的代码段添加标识信息;
所述获取单元112用于获取待保护的代码段,所述加密单元113用于对获取到的待保护的代码段进行加密,得到加密代码,并将加密代码保存在第二进程;
所述预处理单元114用于对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断;
所述接收单元116用于接收第一进程发送的第一信号,所述解密单元117用于对加密代码进行解密,所述发送单元118用于将第一信号对应的待保护的代码段发送至第一进程,所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号;
所述执行单元115用于在第一进程对应的内存空间121中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。
在使用基于VEH的代码保护装置时,首先标识信息添加单元111对第一进程中待保护的代码段添加标识信息。具体地,可以在待保护的代码段的开头和结尾处分别添加ProtectBegin、ProtectEnd两个宏,分别代表保护开始和保护结束。标识信息为识别待保护的代码的标识,在其他实施方式中,还可以为自定义的字符串等。
而后获取单元获取待保护的代码段,加密单元对获取到的待保护的代码段进行加密,得到加密代码,并将加密代码保存在第二进程。优选的,所述第一进程还包括判断单元119和加壳单元120,所述判断单元119用于判断第一进程中是否存在具有标识信息的待保护的代码段,若是则获取单元112用于获取待保护的代码段,加密单元对获取到的待保护的代码段进行加密,得到加密代码,并将加密代码保存在第二进程,而后加壳单元对第一进程代码进行加壳处理;否则加壳单元120用于对第一进程代码进行加壳处理。
若第一进程中不存在标识信息的待保护的代码段,说明无需对第一进程进行特殊保护处理,因而可以对第一进程代码进行加壳处理,加壳处理其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩,改变其原来的特征码,隐藏一些字符串等等,使一些资源编辑软件不能正常打开或者修改。通过在线编译及加壳处理,破解者破解采用上述方法加密的不同软件的PE结构均是不同的,大大提高了软件的破解难度。优选的,所述加壳处理包括VMP加壳处理或TMD加壳处理。
若第一进程中存在标识信息的待保护的代码段,则获取待保护的代码段并进行加密,得到加密代码,并对第一进程代码进行加壳处理。在本实施方式中,第一进程为.exe格式的可执行程序。“获取单元获取待保护的代码段,加密单元对获取到的待保护的代码段进行加密,得到加密代码”具体包括:获取单元提取第一进程中待保护的代码段,加密单元使用加密算法进行加密,并保存为.dat文件。而后将加密代码保存至第二进程,以便后续调用。简言之,加壳处理可以根据开发者的实际需要决定是否采用,加壳处理可以通过加壳工具来实现。
而后预处理单元对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断。所述异常中断包括除0异常和定义异常,所述除0异常对应的预处理包括:执行除法时,将除数设置为0;所述定义异常对应的预处理包括:将定义汇编码转换为对应的字节码。定义异常包括int1异常和in3异常,例如int1其对应的汇编码为_asm{int 1},则将该汇编码转换为字节码为0xCD 0x01,当执行待保护的代码段时,由于访问无效内存地址将发生异常中断。再比如int3异常,其对应汇编码为_asm{int3},转换为字节码为0xCC。当执行待保护的代码段时,由于int3是windows系统自带的用于调试进程的断点,将发生异常中断。除0异常当执行除法时,由于除数为0,会发生异常中断。
而后接收单元接收第一进程发送的第一信号,解密单元对加密代码进行解密,将第一信号对应的待保护的代码段发送至第一进程。所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号。由于第一进程中待保护的代码段经过预设处理,因而在运行这些代码段时会发生异常,第一进程发送第一信号至第二进程。第二进程接收第一进程发送的第一信号后,会对加密代码进行解密,解密后得到加密前的源程序,第二进程将加密前的源程序发送至第一进程。在一些实施例中,需要保护的代码段往往为多个,而生成的加密文件往往只有一个,因而第二进程会先对加密文件进行解密,并将解密后第一信号对应的待保护的代码段发送至第一进程。例如第一进程中有A、B、C三个待保护的代码段,它们经过加密后保存为一个加密文件并存储于第二进程中,当运行到第一进程中的A代码段时,发送异常中断,并发送第一信号至第二进程,第二进程对加密文件进行解密,得到A、B、C三个待保护的代码段的源程序,并将A代码段的源程序发送至第一进程。
而后执行单元在第一进程对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。在本实施方式中,所述执行单元还用于继续执行指定位置的代码,所述指定位置的代码为待保护的代码段的下一行代码。例如待保护的代码段在第一进程代码中的位置为第40行至第50行代码,当第一进程运行至第40行代码时,会从第二进程获取解密后的待保护的代码段的源代码,并新建内存空间进行运行,当运行完成后,将释放新建的待保护的代码段对应的内存空间,并返回运行第51行代码,直至下一个带保护的代码段。
上述技术方案所述的基于VEH的代码保护方法和装置,所述方法包括以下步骤:首先对第一进程中待保护的代码段添加标识信息;而后获取待保护的代码段并进行加密,得到加密代码,并将加密代码保存在第二进程;而后对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断;
而后第二进程接收第一进程发送的第一信号,并对加密代码进行解密,将第一信号对应的待保护的代码段发送至第一进程,所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号;而后第一进程在其对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。将第一进程中待保护的代码段或数据进行加密,提高了程序反静态分析的能力。且只有在程序运行时才对代码和数据进行解密,一方面保证了程序正常运行和访问数据,另一方面不会增加源程序的占用空间。同时,将加密的代码放在第二进程中,当第一进程需要访问代码数据时,才从第二进程获得,如果此时第二进程未开启,则造成第一进程奔溃。增强了第一进程和第二进程之间的依赖性,提高了破解难度。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者客户端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者客户端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者客户端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。
本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动客户端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

Claims (10)

1.一种基于VEH的代码保护方法,其特征在于,所述方法包括以下步骤:
对第一进程中待保护的代码段添加标识信息;
获取待保护的代码段并进行加密,得到加密代码,并将加密代码保存在第二进程;
对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断;
判断异常中断是否来自待保护的代码段处,若是则发送第一信号至第二进程,若否则不发送第一信号至第二进程;
第二进程接收第一进程发送的第一信号,并对加密代码进行解密,将第一信号对应的待保护的代码段发送至第一进程,所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号;
第一进程在其对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。
2.如权利要求1所述的基于VEH的代码保护方法,其特征在于,所述方法还包括:
判断第一进程中是否存在具有标识信息的待保护的代码段,若是则执行步骤“获取待保护的代码段并进行加密,得到加密代码,并将加密代码保存在第二进程”,而后对第一进程代码进行加壳处理;否则对第一进程代码进行加壳处理。
3.如权利要求2所述的基于VEH的代码保护方法,其特征在于,所述加壳处理包括VMP加壳处理或TMD加壳处理。
4.如权利要求1所述的基于VEH的代码保护方法,其特征在于,所述步骤“第一进程在其对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间”之后还包括步骤:
继续执行指定位置的代码,所述指定位置的代码为待保护的代码段的下一行代码。
5.如权利要求1所述的基于VEH的代码保护方法,其特征在于,所述异常中断包括除0异常和定义异常,所述除0异常对应的预处理包括:执行除法时,将除数设置为0;所述定义异常对应的预处理包括:将定义汇编码转换为对应的字节码。
6.一种基于VEH的代码保护装置,其特征在于,所述装置包括第一进程和第二进程,所述第一进程包括标识信息添加单元、获取单元、加密单元、预处理单元、执行单元,所述第二进程包括接收单元、解密单元、发送单元;
所述标识信息添加单元用于对第一进程中待保护的代码段添加标识信息;
所述获取单元用于获取待保护的代码段,所述加密单元用于对获取到的待保护的代码段进行加密,得到加密代码,并将加密代码保存在第二进程;
所述预处理单元用于对待保护的代码段进行预处理,使得待保护的代码段在运行时发生异常中断;
所述第一进程还用于判断异常中断是否来自待保护的代码段处,若是则发送第一信号至第二进程,若否则不发送第一信号至第二进程;
所述接收单元用于接收第一进程发送的第一信号,所述解密单元用于对加密代码进行解密,所述发送单元用于将第一信号对应的待保护的代码段发送至第一进程,所述第一信号为待保护的代码段运行发生异常中断后发送至第二进程的信号;
所述执行单元用于在第一进程对应的内存空间中新建待保护的代码段并执行,并在执行完成后释放新建的待保护的代码段对应的内存空间。
7.如权利要求6所述的基于VEH的代码保护装置,其特征在于,所述第一进程还包括判断单元和加壳单元,所述判断单元用于判断第一进程中是否存在具有标识信息的待保护的代码段,若是则获取单元用于获取待保护的代码段,加密单元对获取到的待保护的代码段进行加密,得到加密代码,并将加密代码保存在第二进程,而后加壳单元对第一进程代码进行加壳处理;否则加壳单元用于对第一进程代码进行加壳处理。
8.如权利要求7所述的基于VEH的代码保护装置,其特征在于,所述加壳处理包括VMP加壳处理或TMD加壳处理。
9.如权利要求6所述的基于VEH的代码保护装置,其特征在于,所述执行单元还用于继续执行指定位置的代码,所述指定位置的代码为待保护的代码段的下一行代码。
10.如权利要求6所述的基于VEH的代码保护装置,其特征在于,所述异常中断包括除0异常和定义异常,所述预处理单元用于执行除法时,将除数设置为0;或者,所述预处理单元用于将定义汇编码转换为对应的字节码。
CN201610332774.3A 2016-05-19 2016-05-19 一种基于veh的代码保护方法和装置 Active CN106055934B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610332774.3A CN106055934B (zh) 2016-05-19 2016-05-19 一种基于veh的代码保护方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610332774.3A CN106055934B (zh) 2016-05-19 2016-05-19 一种基于veh的代码保护方法和装置

Publications (2)

Publication Number Publication Date
CN106055934A CN106055934A (zh) 2016-10-26
CN106055934B true CN106055934B (zh) 2019-04-02

Family

ID=57177824

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610332774.3A Active CN106055934B (zh) 2016-05-19 2016-05-19 一种基于veh的代码保护方法和装置

Country Status (1)

Country Link
CN (1) CN106055934B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110135129B (zh) * 2019-04-12 2023-04-07 平安科技(深圳)有限公司 代码段保护方法、装置、计算机设备和存储介质
CN111222103B (zh) * 2019-12-31 2022-03-18 杭州安恒信息技术股份有限公司 基于向量化异常处理的软件保护方法
CN112528342B (zh) * 2020-12-29 2022-06-28 内蒙古工业大学 一种基于编译中间结果的软件保护方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261664A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种使用软件保护装置存储程序代码实现软件保护的方法
CN103116714A (zh) * 2013-03-01 2013-05-22 中标软件有限公司 一种Windows平台可执行文件双进程保护方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424049B2 (en) * 2012-03-02 2016-08-23 Apple Inc. Data protection for opaque data structures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261664A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种使用软件保护装置存储程序代码实现软件保护的方法
CN103116714A (zh) * 2013-03-01 2013-05-22 中标软件有限公司 一种Windows平台可执行文件双进程保护方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"一种白盒环境中抗动态攻击的软件保护方法";许广莲 等;《小型微型计算机系统》;20150930;第36卷(第9期);第2062-2066页

Also Published As

Publication number Publication date
CN106055934A (zh) 2016-10-26

Similar Documents

Publication Publication Date Title
EP3757853B1 (en) Cryptographic computing using encrypted base addresses and used in multi-tenant environments
EP3807797B1 (en) Pointer authentication and dynamic switching between pointer authentication regimes
WO2017107706A1 (zh) 基于arm指令虚拟化的elf文件保护方法及系统
CN106126981B (zh) 基于虚拟函数表替换的软件安全防护方法
CN106055934B (zh) 一种基于veh的代码保护方法和装置
US10586026B2 (en) Simple obfuscation of text data in binary files
CN106096338A (zh) 一种具有数据流混淆的虚拟化软件保护方法
CN107122634B (zh) 软件安装包的加固保护方法及装置
CN101807239A (zh) 一种防止源代码反编译的方法
CN105184118A (zh) 一种基于代码碎片化的Android应用程序加壳保护方法及装置
CN104573427A (zh) 一种可执行应用的混淆方法和装置
CN105893857A (zh) 一种文件加密方法、装置及设备
CN111723345A (zh) 基于回调函数的控制流混淆方法及系统
CN107577925B (zh) 基于双重ARM指令虚拟的Android应用程序保护方法
CN107526622A (zh) Linux的快速异常处理方法及装置
US8347110B2 (en) Protecting a program interpreted by a virtual machine
CN103019865B (zh) 虚拟机监控方法和系统
CN107958141A (zh) 一种基于芯片id号的软件保护方法
CN108021790B (zh) 文件保护方法、装置、计算设备及计算机存储介质
CN102799434B (zh) 一种利用软件保护装置实现自动代码移植的方法
CN104751026A (zh) 安卓系统的软件保护方法、软件应用方法及相关装置
Wang et al. An efficient control-flow based obfuscator for micropython bytecode
WO2017063323A1 (zh) 基于重构技术实现敏感数据云端锁定的方法
CN107368738A (zh) 一种智能设备的防Root方法及装置
US20190042116A1 (en) Techniques for preventing memory corruption

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190304

Address after: Room M451, 4th Floor, Science and Technology Development Center Building, 83 Junzhu Road, Fuzhou Development Zone, Fujian Province (Free Trade Test Zone)

Applicant after: Fuzhou gain network technology Co., Ltd.

Address before: 350003 5-N Building, No. 8, Quian'an Road, Mawei District, Fuzhou City, Fujian Province (Free Trade Test Zone)

Applicant before: FUJIAN CHUANG YI JIA HE DIGITAL INC.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201029

Address after: Room 01, 7th floor, Huaxiong building, No.5, liangcuo Road, Gulou District, Fuzhou City, Fujian Province 350001

Patentee after: FUJIAN DUODUOYUN TECHNOLOGY Co.,Ltd.

Address before: 350000 room M451 (self trade test area) of the No. 83 science and technology development center building, No. 83 science and technology development center building, monarch Road, Fuzhou Development Zone, Fujian Province

Patentee before: FUZHOU LIBEIDE NETWORK TECHNOLOGY Co.,Ltd.