The invention discloses an executable program protection method and device, which relates to the field of computer security technology, and the main purpose is to solve the problem that the program code protection is limited in the existing technology, and protects more code segments in the program assembly. The method includes: from the executable assembly to determine protection method; analyzing the method to protect the protection method, get the IL instruction, protection method of the IL instruction to be encrypted; linked to the first function in the global constructor, the 2 function linked to the function. The first function is used when the protection method is invoked on the protection method of encrypted IL instruction decryption; the global constructor and the IL instruction after the encryption protection method into executable assembly. The invention is mainly used for protecting executable programs.
【技术实现步骤摘要】
一种可执行程序的保护方法及装置
本专利技术涉及计算机安全领域,尤其是一种可执行程序的保护方法及装置。
技术介绍
在信息安全
,软件作为一种宝贵财富,其安全性越来越受到关注。.NET作为微软新一代技术平台,可以使用C#或VB等各种程序语言进行编写,生成.NET微软中间语言(MicrosoftIntermediateLanguage,MSIL),进而通过虚拟机执行引擎运行编译后的MSIL,将中间语言代码转换为机器代码。而在整个代码转换过程中通过.NET编译后的程序集很容易被反编译,甚至生成与.NET编译后的程序集几乎相同的源代码,导致程序集的安全性较差。目前对于程序集的保护方法主要是基于硬件的程序保护,通常从程序集中提取出部分需要保护的代码到保护装置中,进而通过保护装置对程序集进行保护,这样一部分代码在计算机中执行,另一部分代码在保护装置中模拟执行。但是,基于硬件的程序保护的方式在进行代码提取过程中,如果需要保护的代码过多,可移植的代码指令到受保护装置的空间限制,无法对过多的代码进行保护,使得程序集中其他代码的安全性无法保证。
技术实现思路
鉴于上述问题,提出了本专 ...
【技术保护点】
一种可执行程序的保护方法,其特征在于,包括:从可执行程序集中确定待保护方法;解析所述待保护方法,得到所述待保护方法的IL指令,对所述待保护方法的IL指令进行加密;在全局构造函数中对第一函数进行挂钩,挂钩后的函数为第二函数,所述第二函数用于当所述待保护方法被调用时对所述待保护方法加密后的IL指令进行解密;将所述全局构造函数以及IL指令加密后的所述待保护方法注入至可执行程序集中。
【技术特征摘要】
1.一种可执行程序的保护方法,其特征在于,包括:从可执行程序集中确定待保护方法;解析所述待保护方法,得到所述待保护方法的IL指令,对所述待保护方法的IL指令进行加密;在全局构造函数中对第一函数进行挂钩,挂钩后的函数为第二函数,所述第二函数用于当所述待保护方法被调用时对所述待保护方法加密后的IL指令进行解密;将所述全局构造函数以及IL指令加密后的所述待保护方法注入至可执行程序集中。2.根据权利要求1所述的方法,其特征在于,所述从可执行程序集中确定待保护方法包括:通过解析所述可执行程序集,建立方法数据库,所述方法数据库中包括所述可执行程序集中的类以及类中的方法;通过查找所述方法数据库,获取待保护方法;或通过调用数据接口遍历所述可执行程序集中的类以及类中的方法,获取待保护方法。3.根据权利要求1所述的方法,其特征在于,所述在全局构造函数中对第一函数进行挂钩包括:从全局构造函数中获取所述第一函数的函数地址;在所述函数地址对应的起始位置添加第二函数,所述第二函数中包括解密判定代码,所述解密判定代码用于当执行到所述待保护方法时,对所述待保护方法进行解密判定。4.根据权利要求3所述的方法,其特征在于,所述从所述全局构造函数中获取所述第一函数的函数地址包括:调用导出函数得到所述第一函数对应的函数指针;根据所述函数指针从所述全局构造函数中读取所述第一函数的函数地址。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:当接收到可执行程序集中预设方法的调用指令时,调用所述第二函数判断所述预设方法是否为加密后的方法;如果是,则在调用所述预设方法之前对所述预设方法加密后的IL指令进行解密;如果否,则直接调用所述预设方法。6.一种可执行程序的保护装置,其特征在于,包括:确定单元,用于从可执行程序集中确定待保护方法;...
【专利技术属性】
技术研发人员:孙吉平,朱庆芬,
申请(专利权)人:北京深思数盾科技股份有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。