一种程序代码的保护方法、装置及存储介质制造方法及图纸

技术编号:27536577 阅读:25 留言:0更新日期:2021-03-03 11:24
本申请公开了一种程序代码的保护方法、装置及存储介质。所述方法包括:接收对目标程序进行保护的触发事件;获取所述目标程序的中间语言代码;对所述中间语言代码进行加密;在加密完成后,为所述目标程序附加解密代码,所述解密代码用于对所述中间语言代码进行解密,并使得解密后的中间语言代码对用户不可见。采用本申请所提供的方案,可以对目标程序的中间语言代码进行加密,从而避免非法用户对中间语言代码的获取,另外,通过一段纯代码即可实现对程序的解密和保护,而无需额外部署完整的保护程序,减小了目标程序的发行体积。减小了目标程序的发行体积。减小了目标程序的发行体积。

【技术实现步骤摘要】
一种程序代码的保护方法、装置及存储介质


[0001]本申请涉及程序开发领域,特别涉及一种程序代码的保护方法、装置及存储介质。

技术介绍

[0002].NET程序开发具有便捷跨平台的优点,但是其安全性并不高,反编译以及破解门槛很低。例如,非法用户可以获取程序的中间语言代码,通过对中间语言代码的解读以实现对.NET程序的反编译,对程序开发者的利益造成极大的损失。
[0003]为了防止.NET程序被非法利用,亟需提供一种程序代码的保护方法,以对.NET程序进行保护,从而加大反编译的难度。

技术实现思路

[0004]本申请实施例的目的在于提供一种程序代码的保护方法,包括:
[0005]接收对目标程序进行保护的触发事件;
[0006]获取所述目标程序的中间语言代码;
[0007]对所述中间语言代码进行加密;
[0008]在加密完成后,为所述目标程序附加解密代码,所述解密代码用于对所述中间语言代码进行解密,并使得解密后的中间语言代码对用户不可见。
[0009]本申请的有益效果在于:可以对目标程序的中间语言代码进行加密,从而避免非法用户对中间语言代码的获取,另外,通过一段纯代码即可实现对程序的解密和保护,而无需额外部署完整的保护程序,减小了目标程序的发行体积。
[0010]在一个实施例中,所述方法还包括:
[0011]获取目标程序的类型;
[0012]根据所述目标程序的类型判断所述中间语言代码是否为可加密代码。
[0013]在一个实施例中,所述对所述中间语言代码进行加密,包括:
[0014]获取对所述中间语言进行加密的密钥;
[0015]根据所述密钥对所述中间语言代码进行加密。
[0016]在一个实施例中,所述方法还包括:
[0017]在根据所述密钥对所述中间语言代码进行加密之后,根据所述密钥生成解密代码。
[0018]本申请还提供一种程序代码的保护方法,包括:
[0019]在检测到目标程序运行时,对所述目标程序对应的中间语言代码进行解密,其中,解密后的中间语言代码对用户不可见;
[0020]对所述解密后的中间语言代码进行编译,以得到所述目标程序对应的机器码;
[0021]根据所述机器码运行所述目标程序。
[0022]在一个实施例中,所述对所述目标程序对应的中间语言代码进行解密,包括:
[0023]获取解密代码;
[0024]执行所述解密代码,以通过所述解密代码对所述目标程序对应的中间语言代码进行解密。
[0025]在一个实施例中,所述解密代码通过以下方式对所述目标程序对应的中间语言代码进行解密:
[0026]在所述解密代码执行时,基于对所述中间语言代码进行解密的密钥修改JIT编译器中的函数,以使所述JIT编译器具备对所述目标程序对应的中间语言代码解密的功能;
[0027]运行所述JIT编译器,以对所述中间语言代码进行解密。
[0028]在一个实施例中,所述对所述解密后的中间语言代码进行编译,以得到所述目标程序对应的机器码,包括:
[0029]当所述JIT编译器对所述中间语言代码进行解密之后,以用户不可见的方式将所述解密后的中间语言代码输入至所述JIT编译器;
[0030]继续运行所述JIT编译器,以使所述JIT编译器通过对所述解密后的中间语言代码进行编译得到所述目标程序对应的机器码。
[0031]本申请还提供一种程序代码的保护装置,包括:
[0032]接收模块,用于接收对目标程序进行保护的触发事件;
[0033]获取模块,用于获取所述目标程序的中间语言代码;
[0034]加密模块,用于对所述中间语言代码进行加密;
[0035]附加模块,用于在加密完成后,为所述目标程序的入口点附加解密代码,所述解密代码用于对所述中间语言代码进行解密,并使得解密后的中间语言代码对用户不可见。
[0036]在一个实施例中,所述装置还包括:
[0037]类型获取模块,用于获取目标程序的类型;
[0038]判断模块,用于根据所述目标程序的类型判断所述中间语言代码是否为可加密代码。
[0039]在一个实施例中,加密模块,包括:
[0040]获取子模块,用于获取对所述中间语言进行加密的密钥;
[0041]加密子模块,用于根据所述密钥对所述中间语言代码进行加密。
[0042]在一个实施例中,所述装置还包括:
[0043]生成模块,用于在根据所述密钥对所述中间语言代码进行加密之后,根据所述密钥生成解密代码。
[0044]本申请还提供一种程序代码的保护装置,包括:
[0045]解密模块,用于在检测到目标程序运行时,对所述目标程序对应的中间语言代码进行解密,其中,解密后的中间语言代码对用户不可见;
[0046]编译模块,用于对所述解密后的中间语言代码进行编译,以得到所述目标程序对应的机器码;
[0047]运行模块,用于根据所述机器码运行所述目标程序。
[0048]本申请还提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由加密装置的处理器执行时,使得加密装置能够执行一种程序代码的保护方法,包括:
[0049]接收对目标程序进行保护的触发事件;
[0050]获取所述目标程序的中间语言代码;
[0051]对所述中间语言代码进行加密;
[0052]在加密完成后,为所述目标程序附加解密代码,所述解密代码用于对所述中间语言代码进行解密,并使得解密后的中间语言代码对用户不可见。
[0053]所述存储介质中的指令还包括:
[0054]获取目标程序的类型;
[0055]根据所述目标程序的类型判断所述中间语言代码是否为可加密代码。
[0056]所述存储介质中的指令还包括:
[0057]所述对所述中间语言代码进行加密,包括:
[0058]获取对所述中间语言进行加密的密钥;
[0059]根据所述密钥对所述中间语言代码进行加密。
[0060]所述存储介质中的指令还包括:
[0061]在根据所述密钥对所述中间语言代码进行加密之后,根据所述密钥生成解密代码。
[0062]本申请还提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由解密装置的处理器执行时,使得解密装置能够执行一种程序代码的保护方法,包括:
[0063]在检测到目标程序运行时,对所述目标程序对应的中间语言代码进行解密,其中,解密后的中间语言代码对用户不可见;
[0064]对所述解密后的中间语言代码进行编译,以得到所述目标程序对应的机器码;
[0065]根据所述机器码运行所述目标程序。
[0066]所述存储介质中的指令还包括:
[0067]所述对所述目标程序对应的中间语言代码进行解密,包括:
[0068]获取解密代码;...

【技术保护点】

【技术特征摘要】
1.一种程序代码的保护方法,其特征在于,包括:接收对目标程序进行保护的触发事件;响应于所述触发事件,获取所述目标程序的中间语言代码;对所述中间语言代码进行加密;在加密完成后,为所述目标程序附加解密代码,所述解密代码用于对所述中间语言代码进行解密,并使得解密后的中间语言代码对用户不可见。2.如权利要求1所述的方法,其特征在于,所述方法还包括:获取目标程序的类型;根据所述目标程序的类型判断所述中间语言代码是否为可加密代码。3.如权利要求1所述的方法,其特征在于,所述对所述中间语言代码进行加密,包括:获取对所述中间语言进行加密的密钥;根据所述密钥对所述中间语言代码进行加密。4.如权利要求1所述的方法,其特征在于,所述方法还包括:在根据所述密钥对所述中间语言代码进行加密之后,根据所述密钥生成解密代码。5.一种程序代码的保护方法,其特征在于,包括:在检测到目标程序运行时,对所述目标程序对应的中间语言代码进行解密,其中,解密后的中间语言代码对用户不可见;对所述解密后的中间语言代码进行编译,以得到所述目标程序对应的机器码;根据所述机器码运行所述目标程序。6.如权利要求5所述的方法,其特征在于,所述对所述目标程序对应的中间语言代码进行解密,包括:获取解密代码;执行所述解密代码,以通过所述解密代码对所述目标程序对应的中间语言代码进行解密。7.如权利要求6所述的方法,其特征在于,所述解密代码通过以下方式对所述目标程序对应的中间语言代码进行解密:在所述解密代码执行时,基于对所述中间语言代码进行解密的密钥修改JIT编译器中的函数,以使所述JIT编译器具备对所述目标程序对...

【专利技术属性】
技术研发人员:孙吉平张磊
申请(专利权)人:北京深思数盾科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1