一种加固安装包的动态链接库DLL文件的方法和装置制造方法及图纸

技术编号:14361272 阅读:55 留言:0更新日期:2017-01-09 04:29
本发明专利技术公开了一种加固安装包的动态链接库DLL文件的方法和装置,其中所述方法包括:对安装包的DLL文件进行加密,得到加密后的DLL文件;生成与加密后的DLL文件对应的解密程序;将加密后的DLL文件和解密程序打包到所述安装包中。该技术方案采用与DLL文件独立的解密程序来实现对DLL文件的加固,使用逆向分析的方法很难实现对DLL文件的破解,从而实现对DLL文件的有效保护,满足了开发者对于DLL文件进行保护的需求。

【技术实现步骤摘要】

本专利技术涉及信息安全领域,特别涉及一种加固安装包的动态链接库DLL文件的方法和装置
技术介绍
应用往往通过安装包的形式下发到智能终端上,由用户进行安装。如果安装包未经加固处理,很容易被解包后经过处理,实现对安装包的修改,这是开发者所不希望见到的。以安装包中的动态链接库DLL文件为例,现有技术中,对DLL文件的加固很容易通过逆向分析进行解密,使得DLL文件得不到有效的保护。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的加固安装包的动态链接库DLL文件的方法和装置。依据本专利技术的一个方面,提供了一种加固安装包的动态链接库DLL文件的方法,包括:对安装包的DLL文件进行加密,得到加密后的DLL文件;生成与加密后的DLL文件对应的解密程序;将加密后的DLL文件和解密程序打包到所述安装包中。可选地,该方法进一步包括:当所述安装包被安装后,每次启动对应的应用时,由所述解密程序对所述加密后的DLL文件进行解密,得到解密后的DLL文件。可选地,所述由所述解密程序对所述加密后的DLL文件进行解密包括:由所述解密程序中的第一钩子程序监控libmono.so文件中的DLL加载函数是否被调用;当监控到该DLL加载函数被调用时,获取该DLL加载函数将所述加密后的DLL文件加载到内存中的地址;根据所述加密后的DLL文件加载到内存中的地址,由所述解密程序自身包含的解密逻辑对所述加密后的DLL文件进行解密,并将解密后的DLL文件保存到内存中,用所述解密后的DLL文件在内存中的地址替换所述DLL加载函数返回的地址。可选地,该方法进一步包括:由所述解密程序中的第二钩子程序监控libmain.so文件中的dlopen函数是否被调用;当监控到dlopen函数被调用时,判断其打开的动态链接库文件是否为libmono.so文件;当调用的动态链接库文件为libmono.so文件时,再由所述第一钩子程序监控libmono.so文件中的DLL加载函数是否被调用。可选地,该方法进一步包括:由所述解密程序中的第三钩子程序监控loadlibrary函数是否被调用;当监控到loadlibrary函数被调用时,判断其加载的动态链接库文件是否为libmain.so文件;当调用的动态链接库文件为libmain.so文件时,再由所述第二钩子程序监控libmain.so文件中的dlopen函数是否被调用。可选地,该方法进一步包括:根据所述解密后的DLL文件在内存中的地址,由libmono.so文件中的DLL翻译函数对解密后的DLL文件进行翻译。可选地,所述将加密后的DLL文件和解密程序打包到所述安装包中包括:在所述安装包中声明,当所述安装包被安装后,每次启动对应的应用时,在该应用的Application类中调用所述解密程序。可选地,所述将加密后的DLL文件和解密程序打包到所述安装包中包括:对所述安装包增加外壳;将所述解密程序插入到所述外壳中。依据本专利技术的另一方面,提供了一种加固安装包的动态链接库DLL文件的装置,包括:加密单元,适于对安装包的DLL文件进行加密,得到加密后的DLL文件;生成与加密后的DLL文件对应的解密程序;打包单元,适于将加密后的DLL文件和解密程序打包到所述安装包中。可选地,当所述安装包被安装后,每次启动对应的应用时,由所述解密程序对所述加密后的DLL文件进行解密,得到解密后的DLL文件。可选地,所述由所述解密程序对所述加密后的DLL文件进行解密包括:由所述解密程序中的第一钩子程序监控libmono.so文件中的DLL加载函数是否被调用;当监控到该DLL加载函数被调用时,获取该DLL加载函数将所述加密后的DLL文件加载到内存中的地址;根据所述加密后的DLL文件加载到内存中的地址,由所述解密程序自身包含的解密逻辑对所述加密后的DLL文件进行解密,并将解密后的DLL文件保存到内存中,用所述解密后的DLL文件在内存中的地址替换所述DLL加载函数返回的地址。可选地,该装置进一步包括:由所述解密程序中的第二钩子程序监控libmain.so文件中的dlopen函数是否被调用;当监控到dlopen函数被调用时,判断其打开的动态链接库文件是否为libmono.so文件;当调用的动态链接库文件为libmono.so文件时,再由所述第一钩子程序监控libmono.so文件中的DLL加载函数是否被调用。可选地,该装置进一步包括:由所述解密程序中的第三钩子程序监控loadlibrary函数是否被调用;当监控到loadlibrary函数被调用时,判断其加载的动态链接库文件是否为libmain.so文件;当调用的动态链接库文件为libmain.so文件时,再由所述第二钩子程序监控libmain.so文件中的dlopen函数是否被调用。可选地,该装置进一步包括:根据所述解密后的DLL文件在内存中的地址,由libmono.so文件中的DLL翻译函数对解密后的DLL文件进行翻译。可选地,所述打包单元,适于在所述安装包中声明,当所述安装包被安装后,每次启动对应的应用时,在该应用的Application类中调用所述解密程序。可选地,所述打包单元,适于对所述安装包增加外壳;将所述解密程序插入到所述外壳中。由上述可知,本专利技术的技术方案,对安装包的DLL文件进行加密,得到加密后的DLL文件,并生成与加密后的DLL对应的解密程序,将其与DLL文件打包到安装包中,从而实现了对安装包中DLL文件的加固。该技术方案采用与DLL文件独立的解密程序来实现对DLL文件的加固,使用逆向分析的方法很难实现对DLL文件的破解,从而实现对DLL文件的有效保护,满足了开发者对于DLL文件进行保护的需求。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例的一种加固安装包的动态链接库DLL文件的方法的流程图;图2示出了根据本专利技术一个实施例的一种加固安装包的动态链接库DLL文件的装置的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了根据本专利技术一个实施例的一种加固安装包的动态链接库DLL文件的方法的流程图,如图1所示,该方法包括:步骤S110,对安装包的DLL文件进行加密,得到加密后的DLL文件。DLL(DynamicLinkLibrary,动态链接库)文件中存放的是各类应用的函数(子过程)实现过程,当应用需要调用函数时需要先载入DLL文件,然后取得函数的地址,最后进行调用。使用DLL文件的好处是应用不需要在运行之初加载所有代码,只有在应用本文档来自技高网...
一种加固安装包的动态链接库DLL文件的方法和装置

【技术保护点】
一种加固安装包的动态链接库DLL文件的方法,其中,该方法包括:对安装包的DLL文件进行加密,得到加密后的DLL文件;生成与加密后的DLL文件对应的解密程序;将加密后的DLL文件和解密程序打包到所述安装包中。

【技术特征摘要】
1.一种加固安装包的动态链接库DLL文件的方法,其中,该方法包括:对安装包的DLL文件进行加密,得到加密后的DLL文件;生成与加密后的DLL文件对应的解密程序;将加密后的DLL文件和解密程序打包到所述安装包中。2.如权利要求1所述的方法,其中,该方法进一步包括:当所述安装包被安装后,每次启动对应的应用时,由所述解密程序对所述加密后的DLL文件进行解密,得到解密后的DLL文件。3.如权利要求1所述的方法,其中,所述由所述解密程序对所述加密后的DLL文件进行解密包括:由所述解密程序中的第一钩子程序监控libmono.so文件中的DLL加载函数是否被调用;当监控到该DLL加载函数被调用时,获取该DLL加载函数将所述加密后的DLL文件加载到内存中的地址;根据所述加密后的DLL文件加载到内存中的地址,由所述解密程序自身包含的解密逻辑对所述加密后的DLL文件进行解密,并将解密后的DLL文件保存到内存中,用所述解密后的DLL文件在内存中的地址替换所述DLL加载函数返回的地址。4.如权利要求3所述的方法,其中,该方法进一步包括:由所述解密程序中的第二钩子程序监控libmain.so文件中的dlopen函数是否被调用;当监控到dlopen函数被调用时,判断其打开的动态链接库文件是否为libmono.so文件;当调用的动态链接库文件为libmono.so文件时,再由所述第一钩子程序监控libmono.so文件中的DLL加载函数是否被调用。5.如权利要求4...

【专利技术属性】
技术研发人员:邓华新霍亮
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:北京;11

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

1