[发明专利]一种C++系统的软件定义化关键函数定位与提取方法有效
| 申请号: | 202010520447.7 | 申请日: | 2020-06-08 |
| 公开(公告)号: | CN111857681B | 公开(公告)日: | 2021-04-30 |
| 发明(设计)人: | 黄罡;张颖;史默臻;蔡华谦 | 申请(专利权)人: | 北京大学 |
| 主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F11/34 |
| 代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 苟冬梅 |
| 地址: | 100871*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 c++ 系统 软件 定义 关键 函数 定位 提取 方法 | ||
1.一种C++系统的软件定义化关键函数定位与提取方法,其特征在于,包括:
在基于C++开发的用户系统的可执行文件中进行插桩,以对汇编语言中的函数的运行信息进行记录,获得函数运行日志;
显示所述函数运行日志,当接收到用户查询业务数据的触发操作时,在所述函数运行日志中定位所述业务数据关联的关键函数;
根据所述关键函数的运行信息,确定所述关键函数的调用约定和参数类型;
生成所述关键函数的调用代码,将所述调用代码进行封装并注入所述用户系统,以提取所述关键函数;
根据所述关键函数的运行信息,确定所述关键函数的调用约定,包括:
根据所述关键函数的运行信息,反汇编获得所述关键函数的地址和调用所述关键函数的返回指令;
根据所述关键函数的地址和调用所述关键函数的返回指令,判断所述关键函数的执行逻辑中是否存在未初始化使用的ecx寄存器和edx寄存器;
当所述关键函数的执行逻辑中存在未初始化使用的ecx寄存器和edx寄存器时,确定所述关键函数采用了_fastcall调用约定;
当所述关键函数的执行逻辑中不存在未初始化使用的ecx寄存器和edx寄存器时,判断所述关键函数的返回指令是否为ret N指令,N为所述关键函数的参数所占的字节总数;
当所述关键函数的返回指令为ret N指令且执行逻辑中不存在未初始化使用的ecx寄存器和edx寄存器时,确定所述关键函数采用了_stdcall调用约定;
当所述关键函数的返回指令不为ret N指令且执行逻辑中不存在未初始化就使用的ecx寄存器和edx寄存器时,判断所述关键函数在调用并且返回后,是否负责了被调用函数参数的清除工作;如果是,确定用户采用了_cdecl调用约定;
根据所述关键函数的运行信息,确定所述关键函数的参数类型,包括:
将所述关键函数的运行信息在各种参数类型下的内容进行显示;
当接收到用户选择目标参数类型的触发操作时,将所述目标参数类型确定为所述关键函数的参数类型。
2.根据权利要求1所述的方法,其特征在于,所述运行信息包括函数的调用信息、返回信息以及地址信息;在基于C++开发的用户系统的可执行文件中进行插桩,以对汇编语言中的函数的运行信息进行记录,获得函数运行日志,包括:
利用C语言指针在基于C++开发的用户系统的可执行文件中写入插桩代码;
通过所述插桩代码对汇编语言中的函数的调用信息、返回信息以及地址信息进行记录,获得函数运行日志。
3.根据权利要求2所述的方法,其特征在于,通过所述插桩代码对汇编语言中的函数的调用信息、返回信息以及地址信息进行记录,获得函数运行日志,包括:
在接收到运行所述插桩代码的触发操作时,通过所述插桩代码对汇编语言中的函数的调用信息、返回信息以及地址信息写入所述用户系统的内存;
当所述内存中的数据量达到预设存储阈值时,将所述内存中的所述函数的调用信息、返回信息以及地址信息写入所述函数运行日志。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
确定所述函数中的非逻辑函数;
判断所述非逻辑函数的调用次数;
当所述非逻辑函数的调用次数大于等于预设记录阈值时,停止将所述非逻辑函数的调用信息、返回信息以及地址信息写入所述函数运行日志。
5.根据权利要求1~4任一项所述的方法,其特征在于,所述方法还包括:
删除所述函数运行日志中没有对应调用信息的返回信息;
删除所述函数运行日志中没有对应返回信息的调用信息。
6.根据权利要求2所述的方法,其特征在于,所述函数运行日志包括多个日志文件,所述日志文件与线程一一对应;显示所述函数运行日志,包括:
针对每个线程,在相应的日志文件中,以函数为显示条目,在所述显示条目内显示所述函数的调用信息、返回信息以及地址信息;其中:
针对所述函数的调用信息内部不同层次的调用结构,用缩进表示栈的深度;
所述函数的调用信息、返回信息与所述函数的地址信息具有匹配关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010520447.7/1.html,转载请声明来源钻瓜专利网。





