[发明专利]软件保护方法和软件保护装置有效
申请号: | 201710639745.6 | 申请日: | 2017-07-31 |
公开(公告)号: | CN107423586B | 公开(公告)日: | 2018-11-20 |
发明(设计)人: | 孙吉平;张伟双 | 申请(专利权)人: | 北京深思数盾科技股份有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京金信知识产权代理有限公司 11225 | 代理人: | 黄威;董领逊 |
地址: | 100193 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 保护 方法 保护装置 | ||
本公开提供一种软件保护方法,该方法包括:解析.NET可执行程序,识别.NET可执行程序中的元数据目录;将元数据目录中的内容用预定方式隐藏;将.NET可执行程序的程序入口修改为指向预定代码,得到受保护的.NET可执行程序,该预定代码用于恢复元数据目录。本公开还提供了软件保护装置和存储有指令的计算机可读存储介质。通过本发明的软件保护方法和装置,能够抵抗静态分析,实现更好地保护.NET程序的目的。
技术领域
本发明涉及软件保护领域,尤其涉及一种软件保护方法和一种软件保护装置。
背景技术
.NET架构在提供了异常便利的同时,也存在一个非常大的缺陷,即,.NET程序很容易被反编译。对于使用例如C#等语言编译生成的.NET框架下的可执行程序,使用特定的反编译工具即可将其直接反编译IL(中间语言)指令,甚至反编译成C#代码,因此安全性很差。常见的反编译工具包括例如dnSpy、ILSpy等。反编译可以看成是编译的逆过程,也即,将以机器语言形式存在的目标代码翻译成与其功能等价的汇编语言形式或高级语言形式的代码的过程。由于在进行了反编译后即可获取原代码的逻辑,导致对应的.NET框架下的可执行程序的版本很容易受到侵害。
现有技术中的一些用于.NET程序的保护方法包括,从编译好的.NET程序选取包含.NET IL指令的二进制代码段;对该二进制代码段进行变换,并从.NET程序中删除该二进制代码段;将经过变换后的二进制代码段写入.NET程序的外壳程序中,并将外壳程序调用指令写入.NET程序中;当.NET程序运行到外壳程序调用指令时,外壳程序调用.NET虚拟机,然后由.NET虚拟机运行经变换后的二进制代码段。然而,该方法仅选取的是包含.NET IL指令的二进制代码段,并且需要调用.NET虚拟机,一方面,这种对二进制代码段的变换所能实现的安全性不强,不能很好地抵抗反编译工具的静态分析,另一方面,调用.NET虚拟机增加了内存开销。
目前,对于以更加简单、灵活且有效的方式保护.NET框架下的可执行程序的方法和装置有迫切的需求。
发明内容
本发明的目的是提供能够增强对.NET框架下的可执行程序进行保护的方法和装置。
本发明的另一目的是提供一种能够以简单、安全且有效的方式保护.NET框架下的可执行程序的方法和装置。
根据本发明的一方面,提供一种软件保护方法,该方法可以包括:解析.NET可执行程序,识别.NET可执行程序中的元数据目录;将元数据目录中的内容用预定方式隐藏;将.NET可执行程序的程序入口修改为指向预定代码,得到受保护的.NET可执行程序,该预定代码用于恢复元数据目录。
优选地,将元数据目录中的内容用预定方式隐藏可以包括,将元数据目录中的内容用预定加密算法加密。
优选地,将元数据目录中的内容用预定方式隐藏可以包括,将元数据目录中的内容加密后,将加密内容存储至.NET可执行程序中的预定位置,并清除元数据目录中的内容。
优选地,将.NET可执行程序的程序入口修改为指向预定代码包括:修改.NET可执行程序的入口地址为新入口地址;在新入口地址之后插入预定代码。
优选地,预定代码中包括:对隐藏的元数据目录中的内容进行恢复的代码;用于重建.NET可执行程序的本地文件和内存映像的代码;当.NET可执行程序被操作系统访问时,触发挂钩程序的代码。
优选地,挂钩程序配置为通知操作系统当前执行的程序为.NET程序和恢复后的元数据的存储目录的位置。
尤其优选地,上述的预定代码可以是外壳程序(ShellCode)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京深思数盾科技股份有限公司,未经北京深思数盾科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710639745.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种远光灯透镜结构
- 下一篇:一种LED装饰投光灯