[发明专利]一种在已发布程序中增加参数的方法和装置在审
申请号: | 202010428067.0 | 申请日: | 2020-05-20 |
公开(公告)号: | CN113760379A | 公开(公告)日: | 2021-12-07 |
发明(设计)人: | 周志刚 | 申请(专利权)人: | 武汉斗鱼鱼乐网络科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 梁凯 |
地址: | 430000 湖北省武汉市东湖新技术开发区软件园东路*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 发布 程序 增加 参数 方法 装置 | ||
1.一种在已发布程序中增加参数的方法,应用于客户端,其特征在于,所述方法包括:
从关联的服务程序中获取目标参数信息;
从所述目标参数信息中提取目标参数和所述目标参数的数据类型,并根据所述目标参数信息获取所述目标参数所属的目标函数在内存中的第一地址;
根据所述数据类型获得所述目标参数的数据大小,并根据所述数据大小为所述目标参数分配相应大小的数据内存空间;
分配一段与所述数据内存空间对应的代码内存空间,并将所述代码内存空间的属性设置为PAGE_EXECUTE_READWRITE;
根据所述第一地址从所述内存中读取待修改参数的汇编代码,并将所述汇编代码拷贝至所述代码内存空间;
将所述待修改参数拷贝至所述数据内存空间,在所述数据内存空间内的待修改参数中增加所述目标参数;
将所述内存中的汇编代码修改为跳转至所述代码内存空间的jump指令。
2.根据权利要求1所述的方法,其特征在于,所述将所述待修改参数拷贝至所述数据内存空间,在所述数据内存空间内的待修改参数中增加所述目标参数,包括:
从所述目标参数信息中提取所述待修改参数在所述目标函数中的第二地址和所述目标参数在所述待修改参数中的第三地址;
根据所述第二地址获取待修改参数,并将所述待修改参数拷贝至所述数据内存空间;
在所述数据内存空间内的待修改参数中定位所述第三地址,并在所述第三地址处增加所述目标函数。
3.根据权利要求1所述的方法,其特征在于,所述根据所述目标参数信息获取所述目标参数所属的目标函数在内存中的第一地址,包括:
从所述目标参数信息中提取目标模块的模块名称、目标函数的相对偏移地址和代码长度,所述目标模块包括所述目标函数;
根据所述模块名称获得所述目标模块在所述内存中的起始地址;
根据所述起始地址、所述相对偏移地址和所述代码长度获得所述目标函数在所述内存中的第一地址。
4.根据权利要求1所述的方法,其特征在于,所述从关联的服务程序中获取目标参数信息,包括:
在启动时向关联的服务程序询问是否发送过参数修改请求,若所述服务程序返回确认消息,则获取目标参数信息;
或者,
在运行过程中接收所述服务程序发送的参数修改请求,从所述参数修改请求中提取目标参数信息。
5.根据权利要求4所述的方法,其特征在于,所述从所述参数修改请求中提取目标参数信息之前,包括:
通过系统API函数CreateToolhelp32Snapshot遍历所有工作线程,并调用系统API函数SuspendThread暂停所述工作线程;
相应的,所述将所述内存中的汇编代码修改为跳转至所述代码内存空间的jump指令之后,包括:
调用系统API函数ResumeThread恢复所述工作线程。
6.根据权利要求5所述的方法,其特征在于,所述通过系统API函数CreateToolhelp32Snapshot遍历所有工作线程,并调用系统API函数SuspendThread暂停所述工作线程之后,包括:
判断所述工作线程中是否存在正在执行所述目标函数的线程;
若不存在,则执行所述从所述参数修改请求中提取目标参数信息的步骤;
若存在,则恢复所述工作线程,并设置定时器,在所述定时器超时之后,返回所述判断所述工作线程中是否存在正在执行所述目标函数的线程的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼鱼乐网络科技有限公司,未经武汉斗鱼鱼乐网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010428067.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种隧道巡检设备和隧道巡检方法
- 下一篇:压力平衡装置