[发明专利]一种动态链接库的注入方法及装置有效
申请号: | 201610160227.1 | 申请日: | 2016-03-21 |
公开(公告)号: | CN105843640B | 公开(公告)日: | 2017-11-14 |
发明(设计)人: | 周志刚 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙)42222 | 代理人: | 鲁力 |
地址: | 430000 湖北省武汉市东湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 链接 注入 方法 装置 | ||
技术领域
本发明涉及一种链接库注入方法及装置,尤其是涉及一种动态链接库的注入方法及装置。
背景技术
目前,直播软件都是通过hook进程中的d3d9.dll的Present函数来获取显卡的显示内容,然后把显示内容通过网络发送到服务端就可以实现直播了。目前的hook技术都是在所要hook的函数前面插桩。插桩就是把所要hook的函数头的汇编代码修改成jmp指令跳转到自己的函数,然后自己函数调用完后还原修改处的代码,然后再跳转到原先的所要hook的函数。此方法的实现需要修改d3d9.dll的代码。
但是目前很多游戏尤其是第一人称射击类游戏(First-person shooting game,FPS)类型的游戏存在“外挂”,并且“外挂”功能的实现也会去修改d3d9.dll的代码,所以这样会导致游戏开发商尤其是FPS类型的游戏会对d3d9.dll的代码完整性进行检测,如果检测到有代码被修改则会认定是外挂,游戏会被踢下线。“外挂”不仅会hook Present函数,还会对游戏数据进行修改,是一种不合法的调用,而直播软件只会hookPresent函数从而获取直播的显示内容,而不会对游直播数据做任何修改,是一种合法的调用,不应该被视作非法调用。
发明内容
本发明主要是解决现有技术所存在的动态链接库容易被检测到,从而导致游戏难以正常运行的技术问题,提供了一种动态链接库的注入方法及装置。该注入方法及装置通过在目标进程中分配可执行空间并自加载需要注入的动态链接库,不使用Windows的Loadlibrary,所以无法通过Windows的API检测到此动态链接库的存在。
为了解决上述问题,根据本发明的一个方面,
一种动态链接库的注入方法,其特征在于,包括:
动态链接库加载步骤,用于将动态链接库加载到目标进程的内存空间中;
初始化函数注入步骤,用于将动态链接库初始化函数加载至目标进程的内存空间中;所述动态链接库初始化函数用于修复动态链接库的重定位表及导入表并且调用动态链接库的安全传输层协议初始化表及入口函数;
动态链接库映射步骤,用于将已加载至目标进程内存空间中的动态链接库初始化函数拷贝到目标进程的起始地址;
动态链接库隐藏步骤,用于抹去已加载至目标进程内存空间中的动态链接库信息,所述动态链接库信息包括动态链接库的名字。
优选的,所述动态链接库加载步骤包括以下子步骤:
句柄获取子步骤,用于获取目标进程的句柄,并通过VirtualAlloc函数在目标进程中分配用于加载待注入动态链接库的第一内存空间;
映射加载子步骤,用于解析动态链接库的各个区段,将各个区段独立拷贝至第一内存空间中,同时将各区段所占用的内存单元的属性修改为对应区段的属性。
优选的,所述初始化函数注入步骤中通过VirtualAlloc函数在目标进程中分配用于加载待动态链接库初始化函数的第二内存空间;并且,所述动态链接库初始化函数包括:
重定位表修复步骤,用于通过动态链接库的格式获取其重定位区段,然后按照各区段在目标进程中加载的实际地址修复动态链接库的重定位表;
导入表修复步骤,通过动态链接库的格式获取其导入区段,然后按照导入表需要的真实函数地址进行填充;
初始化表调用步骤,用于调用动态链接库的TLS初始化表;
入口函数调用步骤,用于调用动态链接库的dllmain入口函数。
优选的,所述动态链接库映射步骤中通过创建一个入口函数地址为动态链接库初始化函数入口地址的远程线程来将动态链接库初始化函数拷贝到目标进程的起始地址。
优选的,所述动态链接库隐藏步骤中通过将动态链接库的PE头填充成0的方式抹去动态链接库信息。
一种动态链接库的注入装置,其特征在于,包括:
动态链接库加载模块,用于将动态链接库加载到目标进程的内存空间中;
初始化函数注入模块,用于将动态链接库初始化函数加载至目标进程的内存空间中;所述动态链接库初始化函数用于修复动态链接库的重定位表及导入表并且调用动态链接库的TLS初始化表及入口函数;
动态链接库映射模块,用于将已加载至目标进程内存空间中的动态链接库初始化函数拷贝到目标进程的起始地址;
动态链接库隐藏模块,用于抹去已加载至目标进程内存空间中的动态链接库信息,所述动态链接库信息包括动态链接库的名字。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610160227.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种移动终端软件的版本升级方法及移动终端
- 下一篇:切刀压紧调节装置