[发明专利]一种可执行程序加壳保护方法有效
申请号: | 201210019323.6 | 申请日: | 2012-01-20 |
公开(公告)号: | CN102609666A | 公开(公告)日: | 2012-07-25 |
发明(设计)人: | 陆舟;于华章 | 申请(专利权)人: | 飞天诚信科技股份有限公司 |
主分类号: | G06F21/22 | 分类号: | G06F21/22 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 可执行 程序 保护 方法 | ||
技术领域
本发明属于计算机软件程序保护技术领域,具体涉及对可执行程序加壳的软件保护方法。
背景技术
软件保护是软件开发中一个不可忽视的环节,由于软件开发后要面对众多逆向分析员的研究,要给发布的软件加一层保护壳几乎成了保护软件的一个必要步骤。
计算机软件产品是一种知识密集的特殊产品,开发一个软件产品需要大量的人力物力,成本很高。然而,软件产品的复制却是相当的容易,这就导致了非法复制、盗版软件之风的泛滥。在这种形势下,软件的研制者和销售商为了保护自己的利益不被侵犯,除了采用法律手段外,还必须使用技术手段来保护自己的产品不受侵犯。软件加密是一种有效的保护方式。因此,如何解决软件加密问题是业内亟待解决的技术问题。
发明内容
本发明的目的是提供一种可执行程序加壳保护方法,解决现有技术中的传统加壳保护后的软件易于被攻击者破解及非法篡改的问题。
本发明采取的技术方案是:
一种可执行程序加壳保护方法,包括以下步骤,
步骤101:将打好补丁的外壳目标文件添加到可执行程序文件的尾部形成目标可执行程序文件;
步骤102:对所述目标可执行程序文件的文件头进行修改形成修改后的目标可执行程序文件;
所述修改包括在所述文件头加入一条段命令来描述所述打好补丁的外壳目标文件和密钥设备驱动程序模块,以及修改在所述文件头的命令项找到的线程状态命令和预设段命令;
步骤103:遍历所述修改后的目标可执行程序文件,找到执行代码段,用第一密钥对所述执行代码段进行第一次加密,并用加密结果替换所述修改后的目标可执行程序文件中的执行代码段,得到第一次加密后的目标可执行程序文件;
步骤104:将包含密钥设备驱动和加解密算法的密钥设备驱动程序模块添加到所述第一次加密后的目标可执行程序文件的执行代码段的尾部形成新的第一次加密后的目标可执行程序文件;
步骤105:构建一个外壳程序文件模型;
步骤106:根据所述新的第一次加密后的目标可执行程序文件将所述外壳程序文件模型构建形成外壳程序;
步骤107:调用所述密钥设备驱动程序模块中的加密算法,利用第二密钥对所述外壳程序中的所述新的第一次加密后的目标可执行程序文件进行第二次加密,用第二次加密后的目标可执行程序文件替换所述外壳程序中的所述新的第一加密后的目标可执行程序文件,构成第二次加密后的外壳程序;
步骤108:修改所述第二次加密后的外壳程序的文件头的内容,获得修改后的外壳程序;
步骤109:完成加壳,保存所述修改后的外壳程序。
上述步骤101中,外壳目标文件打补丁的过程包括,将所述外壳目标文件载入内存,将密钥设备驱动程序模块的基本信息添加到所述外壳目标文件的数据段中,将第一随机数作为种子码添加到所述外壳目标文件的数据段中,将密钥设备参数添加到所述外壳目标文件的数据段中。
所述密钥设备驱动程序模块的基本信息包含驱动程序地址、驱动程序大小,所述密钥设备参数包含密钥设备的硬件ID、用户密码和密钥设备的轮询间隔。
上述步骤102中,所述修改在所述文件头的命令项找到的线程状态命令和预设段命令具体为,从所述线程状态命令获取程序原始入口点,并将所述程序原始入口点写入所述预设段命令;将所述预设段命令的入口点写入所述线程状态命令。
上述步骤103中,所述第一密钥是通过以下方式获取的:计算机向密钥设备发送第一随机数,所述密钥设备返回第一密钥。
上述步骤105中,所述外壳程序文件模型的文件头的设置如下:写入段命令和线程状态命令,标志位设置为不需要附加动态连接器,写入的所述段命令的长度设置为第一长度,所述第一长度等于所述新的第一次加密后的目标可执行程序文件的长度。
上述步骤106中,构建形成外壳程序的过程为:从所述外壳程序文件模型中提取出代码段进行处理,然后将所述新的第一次加密后的目标可执行程序文件添加到处理后的所述代码段的尾部一起构成所述外壳程序的代码段;所述处理包括,将第二随机数作为第二密钥添加到代码段的数据中,将待加密文件即所述新的第一次加密后的目标可执行程序文件的文件偏移和文件长度添加到代码段的数据中,将代码段中的数据与代码之间的空隙用随机数进行填充。
进一步的,所述步骤108具体为,遍历所述第二次加密后的外壳程序的文件头,找到段命令,获取所述第二次加密后的目标可执行程序文件的长度并记为第二长度,将所述外壳程序中的段命令的长度设置为第二长度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于飞天诚信科技股份有限公司,未经飞天诚信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210019323.6/2.html,转载请声明来源钻瓜专利网。