[发明专利]一种运行含有自校验的加壳程序的方法和装置有效
申请号: | 201210587208.9 | 申请日: | 2012-12-28 |
公开(公告)号: | CN103077332A | 公开(公告)日: | 2013-05-01 |
发明(设计)人: | 陆舟;于华章 | 申请(专利权)人: | 飞天诚信科技股份有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F11/10 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种运行含有自校验的加壳程序的方法和装置,该方法包括:壳将原程序加载到内存中,钩子函数等待被调用,当钩子函数被调用时,执行相应操作,将结果返回给原程序。本发明公开的一种运行含有自校验的加壳程序的方法和装置,在加壳程序运行时,使加壳程序通过自校验,保证了加壳后的程序的安全性。 | ||
搜索关键词: | 一种 运行 含有 校验 程序 方法 装置 | ||
【主权项】:
一种运行含有自校验的加壳程序的方法,其特征在于,所述方法包括:步骤S1:壳获取指定接口函数的内存地址;步骤S2:所述壳将所述指定接口函数中的部分指令替换为跳转到对应的钩子函数的跳转指令,将所述指定接口函数的所述部分指令保存到与所述指定接口函数对应的钩子函数的代码存储区中,再加入跳转回对应的所述接口函数的跳转指令,所述壳获取加壳程序在存储设备上的访问路径,将加密后的原程序解密到内存中;步骤S3:所述壳将控制权交给所述原程序的入口点;步骤S4:所述钩子函数等待被调用;当第一钩子函数被调用时,所述第一钩子函数调用访问文件函数,返回调用结果,判断所述访问文件函数的位置参数是否与所述加壳程序在所述存储设备上的访问路径一致,若一致则判断所述调用结果是否包含第一句柄,是则保存所述第一句柄,所述第一钩子函数结束,否则所述第一钩子函数结束;若不一致则所述第一钩子函数结束;当第二钩子函数被调用时,所述第二钩子函数读取获取文件大小函数中的句柄参数,判断所述句柄参数是否为保存的所述第一句柄,是则所述第二钩子函数调用获取文件大小函数,获取第一文件大小,对所述第一文件大小进行计算得到第二文件大小,将所述第二文件大小返回给所述原程序,所述第二钩子函数结束;否则,所述第二钩子函数调用所述获取文件大小函数,返回调用结果,所述第二钩子函数结束;当第三钩子函数被调用时,所述第三钩子函数读取读文件函数中的句柄参数,判断所述句柄参数是否为保存的所述第一句柄,是则执行步骤S5,否则,所述第三钩子函数调用所述读文件函数读取相应内容,将读取到的内容返回给 所述原程序,所述第三钩子函数结束;当第四钩子函数被调用时,所述第四钩子函数调用创建文件映射函数,返回调用结果,判断所述创建文件映射函数的句柄参数是否与保存的所述第一句柄一致,若一致则判断所述调用结果是否包含映射文件句柄,是则保存所述映射文件句柄,所述第四钩子函数结束,否则所述第四钩子函数结束;若不一致则所述第四钩子函数结束;当第五钩子函数被调用时,所述第五钩子函数读取所述映射文件函数中的句柄参数,判断所述句柄参数是否为保存的所述映射文件句柄,是则所述第五钩子函数调用所述映射文件函数,根据所述壳的长度和加密头的大小将所述原程序中的与所述句柄参数对应的内容映射到所述内存中,对所述内存中的映射到的内容进行解密,将解密后的内容返回给所述原程序,所述第五钩子函数结束;否则,所述第五钩子函数将与所述句柄参数对应的内容映射到所述内存,返回所述映射的内容,所述第五钩子函数结束;步骤S5:所述第三钩子函数判断将要读取的内容的大小是否在所述加密后的原程序的大小范围内,是则所述第三钩子函数调用所述读文件函数,根据所述壳的长度和加密头的大小读取所述原程序中的相应内容,对读取到的内容进行解密,并将解密后的内容返回给所述原程序,所述第三钩子函数结束;否则,所述第三钩子函数调用所述读文件函数,读取相应内容,对所述读取到的内容进行解密,并将解密后的内容返回给所述原程序,所述第三钩子函数结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于飞天诚信科技股份有限公司,未经飞天诚信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210587208.9/,转载请声明来源钻瓜专利网。
- 上一篇:一种用于数据卡输入限流的集成电路芯片
- 下一篇:一种按钮式抽屉锁定机构