[发明专利]Windows动态链接库的分段双重加密及安全加载方法有效
| 申请号: | 201110388149.8 | 申请日: | 2011-11-29 |
| 公开(公告)号: | CN102938036A | 公开(公告)日: | 2013-02-20 |
| 发明(设计)人: | 徐继军 | 申请(专利权)人: | UT斯达康通讯有限公司 |
| 主分类号: | G06F21/51 | 分类号: | G06F21/51;G06F9/445 |
| 代理公司: | 杭州杭诚专利事务所有限公司 33109 | 代理人: | 尉伟敏 |
| 地址: | 310052 浙*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | windows 动态 链接 分段 双重 加密 安全 加载 方法 | ||
技术领域
本发明涉及信息安全技术,尤其涉及一种在Windows平台上对动态链接库的加密保护及私有的加载方法。
背景技术
在业界,软件产品公司经常将开发的Windows软件以动态链接库(DLL)的形式提供给客户。这是一种很方便的发布方式,但可能存在以下几种威胁:
1. 客户可以用静态分析动态链接库的方法以了解其中的重要算法;
2. 客户可以在程序运行时跟踪调试动态链接库以了解其中的重要算法,并获得运行时的重要数据。比如,在IPTV系统中,跟踪调试终端程序,可以获得流媒体的加扰密钥;
3. 动态链接被加载后,根据其在进程内存空间的映像的起始地址,获得内存映像的段头信息(section header)后,就可获得其完整的内存结构,比如,代码段地址、数据段地址、导出表地址等等,再进行分析;
4. 客户可以非法地将该动态链接库软件传播给第三方使用。
通常的软件加密方法:加密整个文件,用Windows API加载,能在运行状态下被分析得到某些信息,比如能获得其中的API函数、代码段数据、数据段数据等等。或采用加密狗的方法,但需要特殊的硬件,价格昂贵,也不适合普通家庭的各人电脑上安装。还有为可执行文件加壳的方法,但加壳方法只是针对可执行文件,程序载入内存解密后,可以被分析、被调试跟踪。对一般的加壳保护,攻击者很容易找到被保护程序的原始入口点,这时被保护的程序已去壳(解压缩、解密),攻击者可以通过内存中的明文数据,分析目标程序。
公开日为2007年04月11日、公开号为CN 1945589A的专利文献公开了这样的技术方案,一种WINDOWS平台下保护动态链接库接口的方法:A、通过WINDOWS API LOADLIBRARY,首先将要使用的目标DLL的导出函数改名;B、对已改名的目标DLL的导出表进行可逆的加密,再将DLL向用户发放;C、在使用DLL时,把磁盘上的DLL进行内存映射,再在内存中对DLL的导出表进行解密,解密是B步骤中加密的逆过程,最后动态装载内存中的DLL;本方法可以保证在应用程序使用动态链接实现模块化的安全问题,并针对调用WINDOWS API LOADLIBRARY来动态装载DLL进行保护;同时不会破坏DLL的导出表,DLL仍然可以正常使用,也不需要密匙来控制,在使用上非常方便。该方案的不足之处在于对目标DLL的导出表进行加密、在内存中对DLL的导出表进行解密,最后动态装载内存中的DLL过程中,由于原导出表的存在以及通用的加载器、加载方式,容易被跟踪调试、被应用程序私自加载、被静态反汇编等。
发明内容
本发明的目的在于解决现有技术中动态链接库加密后容易被跟踪调试,被应用程序私自加载,被静态反汇编等技术问题,提供一种通用的Windows动态连接库加密保护方法以及私有的加载方法,能够有效防止动态链接库被跟踪调试、私自加载、静态反汇编等操作。
本发明针对现有技术问题主要是通过下述技术方案得以解决的,一种Windows动态链接库的分段双重加密及安全加载方法,包括如下步骤:
(1) 解析Windows动态链接库文件结构;
(2) 建立私有动态链接库导出表;
(3) 清除动态链接库导出表;
(4) 分别对动态链接库文件的代码段、数据段使用指定加密算法的一个加密密钥进行加密;
(5) 对整个动态链接库文件使用指定加密算法的另外一个加密密钥进行加密;
(6) 安全加载步骤包括:
a)对加密的动态链接库文件使用指定加密算法的一个密钥进行解密,建立动态链接库文件内存映像I,对内存映像I中的代码段、数据段使用指定加密算法的另一个密钥进行解密;
b) 建立内存映像II,分配一个虚拟内存块,拷贝内存映像I中的内容,重定位虚拟内存块中的地址数据;
c) 从隐藏在内存映像II代码段中的私有动态链接库导出表输出接口函数给应用程序;
d)删除内存映像I,清除内存映像II的段头(section header)。
本发明通过解析Windows动态链接库文件的结构(即PE结构),建立私有的动态链接库导出表并加以隐藏,将原有的动态链接库导出表(Export Table)清除,分别对动态链接库文件的代码段、数据段用一个密钥加密,最后,再对整体动态链接库文件用另外一个密钥进行加密。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于UT斯达康通讯有限公司,未经UT斯达康通讯有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110388149.8/2.html,转载请声明来源钻瓜专利网。





