[发明专利]数据保护方法及装置有效
申请号: | 201610929145.9 | 申请日: | 2016-10-31 |
公开(公告)号: | CN108021791B | 公开(公告)日: | 2021-08-10 |
发明(设计)人: | 张帆 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京派特恩知识产权代理有限公司 11270 | 代理人: | 张颖玲;蒋雅洁 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据 保护 方法 装置 | ||
1.一种数据保护方法,其特征在于,所述方法包括:
在源代码的关键函数中添加异常指令;
在添加有所述异常指令的源代码中添加反调试代码,生成带有反调试功能的代码;
通过编译带有所述反调试代码、以及所述异常指令的所述源代码,生成带有反调试功能的程序;
所述程序开始运行时,所述程序的主进程创建子进程并由所述子进程调试所述主进程,当所述主进程运行到所述异常指令后停止运行;
所述子进程接收到异常信号时,判断所述主进程是否被其他调试器调试;
若所述主进程被其他调试器调试,向所述主进程发送终止信号,由所述主进程依据所述终止信号终止运行;
若所述主进程未被其他调试器调试,检测所述主进程停止运行的原因;
当检测到所述主进程停止运行的原因是因所述主进程的源代码而产生时,向所述主进程发送恢复信号,恢复所述主进程继续运行;
当检测到所述主进程停止运行的原因是因所述主进程的异常指令而产生时,将所述主进程的异常指令恢复为正常指令并恢复所述主进程运行。
2.根据权利要求1所述的方法,其特征在于,所述程序的主进程创建子进程,包括:
所述程序的主进程先进入反调试初始化函数;
所述主进程基于所述反调试初始化函数查找编译前添加的空函数对应的空函数指针,并创建子进程,以由所述子进程使用预设系统函数调试所述主进程。
3.根据权利要求1所述的方法,其特征在于,所述检测所述主进程停止运行的原因,包括:
基于所述异常信号获取错误函数指针地址;
根据所述错误函数指针地址判断所述主进程停止运行的原因。
4.根据权利要求3所述的方法,其特征在于,所述将主进程的异常指令恢复为正常指令并恢复所述主进程运行,包括:
将所述错误函数指针修复为空函数指针,并向主进程发送恢复信号,恢复所述主进程运行。
5.根据权利要求4所述的方法,其特征在于,所述将所述错误函数指针修复为空函数指针,包括:
获取主进程的当前寄存器列表;
将所述寄存器列表中程序计数器寄存器值由所述错误函数指针修复为通过反调试初始化函数中获取的空函数指针;
将修复后的寄存器列表通过系统调用再设置回主进程,所述主进程基于所述修复后的寄存器列表从所述空函数开始执行。
6.根据权利要求1所述的方法,其特征在于,所述在源代码的关键函数中添加异常指令,包括:
获取函数列表;其中,所述函数列表中存储有需保护的关键函数的函数标识;
基于函数列表确定源代码的关键函数;
在所述源代码的关键函数中添加预设错误函数指针以及对所述预设错误函数指针的调用。
7.根据权利要求1所述的方法,其特征在于,所述在添加有所述异常指令的源代码中添加反调试代码,包括:
将反调试静态库文件对应的反调试代码以及反调试头文件对应的反调试代码引入源代码;
在所述源代码中添加对反调试初始化函数的调用;
在所述源代码中添加空函数。
8.根据权利要求7所述的方法,其特征在于,所述将反调试静态库文件对应的反调试代码以及反调试头文件对应的反调试代码引入源代码,包括:
将反调试静态库文件以及反调试头文件放入源代码中;
通过修改源代码的第一源文件的方式将所述反调试静态库文件对应的反调试代码以及所述反调试头文件对应的反调试代码引入到源代码中;其中,所述第一源文件中记录有所述源代码中各类文件的编译顺序以及需要编译的文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610929145.9/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置