[发明专利]一种程序退出的方法及相关设备有效
申请号: | 201810728297.1 | 申请日: | 2018-07-05 |
公开(公告)号: | CN109117201B | 公开(公告)日: | 2021-03-16 |
发明(设计)人: | 周志刚;陈少杰;张文明 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F9/52 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 刘杰 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 退出 方法 相关 设备 | ||
本发明实施例公开了一种程序退出的方法及相关设备,用于在程序被调试时,将程序改造,使得对程序的破坏更大,更无法恢复,以提高程序的安全性。本发明实施例方法包括:将加解密函数的关键数据和同步互斥锁保存到全局变量,所述加解密函数用于在进行网络协议通信时对数据进行加解密操作,所述同步互斥锁用于对所述数据进行加锁;通过调用Windows系统的应用程序编程接口API中的LoadLibraryA函数获取核心代码的内存地址;通过调用所述API中的GetModuleInformation函数获取所述核心代码的占用内存大小,以将所述核心代码保存到所述全局变量;确定当前程序是否被调试;若所述当前程序被调试,则修改所述加解密函数的关键数据,通过调用循环函数占用所述同步互斥锁,并删除所述核心代码,以退出所述当前程序。
技术领域
本发明涉及控制技术领域,尤其涉及一种程序退出的方法及相关设备。
背景技术
目前,对于Windows平台开发的一部分软件来说,需要对软件的安全性进行保护,例如一些只有注册才能使用的软件、电影游戏程序或者收费软件等,这些软件都希望能安全的运行与用户电脑上,另外,最重要的则是防止黑客破解软件中的收费功能,或者破解软件的安全算法,以避免软件开发厂商的损失。对于黑客来说,通常首先是通过对软件的破解,然后才是利用破解的漏洞来获得利益。而黑客破解软件则是先通过使用一些调试器来调试程序,从而弄清楚软件的安全策略以及实现原理。
因此,对于任何客户端软件来说,检测当前客户端程序是否有被调试是比较重要的,能阻止黑客进行调试,保护软件不被破解。故,如何检测软件是否被调试,同时如何在检测到被调试后强行退出程序以防止黑客进一步调试是一个急需解决的问题。
而在现有技术中,程序的退出大多通过调用系统应用程序编程接口(applicationprogramming interface,API)函数来实现,然而黑客可以通过HOOK相关的API函数,而在调用相关退出进程的API时进行拦截,使得程序不会退出,实现了绕过程序被退出的可能性。而基于调用系统API函数来退出终止程序,一旦被黑客所拦截或者HOOK从而程序还可以继续运行。因此如何在程序被调试时,能够更大程度的破坏程序使其无法恢复,是当前一个较为重要的课题。
发明内容
本发明实施例提供了一种程序退出的方法及相关设备,用于在程序被调试时,将程序改造,使得对程序的破坏更大,更无法恢复,以提高程序的安全性。
本发明实施例的第一方面提供了一种程序退出的方法,包括:将加解密函数的关键数据和同步互斥锁保存到全局变量,所述加解密函数用于在进行网络协议通信时对数据进行加解密操作,所述同步互斥锁用于对所述数据进行加锁,所述关键数据为执行所述加解密函数所必需的数据;通过调用Windows系统的应用程序编程接口API中的LoadLibraryA函数获取核心代码的内存地址;通过调用所述API中的GetModuleInformation函数获取所述核心代码的占用内存大小,以将所述核心代码保存到所述全局变量;确定当前程序是否被调试;若所述当前程序被调试,则修改所述加解密函数的关键数据,通过调用循环函数占用所述同步互斥锁,并删除所述当前程序的核心代码,以退出所述当前程序。
在一种可能的实施例中,所述将加解密函数的关键数据和同步互斥锁保存到全局变量包括:将所述加解密函数的关键数据保存到g_kCrc32Table全局变量中;通过调用系统API函数CreatMutex创建所述同步互斥锁;当所述同步互斥锁被使用时,通过调用API函数WaitForSingleObject等待所述同步互斥锁;将所述同步互斥锁保存到g_hMutex全局变量中。
在一种可能的实施例中,所述确定当前程序是否被调试包括:通过调用Windows系统的应用程序编程接口API中的IsDebuggerPresent函数确定所述当前程序是否被调用;当所述IsDebuggerPresent函数的返回值为1时,确定所述当前程序被调试;当所述IsDebuggerPresent函数的返回值为0时,确定所述当前程序未被调试。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810728297.1/2.html,转载请声明来源钻瓜专利网。