利索能及
我要发布
收藏
专利号: 2018108048810
申请人: 武汉斗鱼网络科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2024-09-06
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种获取自加载模块函数的方法,其特征在于,包括:将目标应用程序中使用的网络协议按照重要程度划分为重要协议和不重要协议,其中,所述重要协议用于通过自加载模块处理,所述不重要协议用于通过系统模块进行处理,所述自加载模块和所述系统模块相同;

保存所述系统模块的套接字socket的功能函数地址,所述功能函数地址包括发送send函数地址和接收recv函数地址;

将所述自加载模块按照内存对齐的方式读取模块到内存中并记录所述自加载模块的内存地址;

对所述自加载模块的重要地址表IAT的导入表进行修复,得到修复后的导入表;

对所述自加载模块的重定位表格进行修复,得到修复后的重定位表格;

根据所述系统模块的套接字socket的功能函数地址、所述自加载模块的内存地址、所述修复后的导入表和所述修复后的重定位表格获取所述自加载模块的send函数地址和recv函数地址。

2.根据权利要求1所述的方法,其特征在于,所述根据所述系统模块的套接字socket的功能函数地址获取所述自加载模块的send函数地址和recv函数地址包括:根据所述系统模块的套接字socket的功能函数地址确定所述系统模块的send函数偏移量和recv函数偏移量;

根据所述系统模块的send函数偏移量和recv函数偏移量确定所述自加载模块的send函数偏移量和recv函数偏移量;

根据所述自加载模块的send函数偏移量和recv函数偏移量确定所述自加载模块的send函数地址和recv函数地址。

3.根据权利要求1所述的方法,其特征在于,所述保存所述系统模块的套接字socket的功能函数地址,所述功能函数地址包括发送send函数地址和接收recv函数地址包括:通过系统函数LoadLibrary来加载所述系统模块到进程中,其中,所述系统函数LoadLibrary包括所述系统模块的名称lpFileName;

确定所述系统函数LoadLibrary的返回值,所述返回值对应所述系统模块句柄;

根据所述系统模块句柄和系统函数GetProcAddress获取send函数地址和recv函数地址。

4.根据权利要求1所述的方法,其特征在于,所述将所述自加载模块按照内存对齐的方式读取模块到内存中并记录所述自加载模块的内存地址包括:调用系统函数CreateFile打开所述自加载模块并且给予读取权限;

定义所述自加载模块的dos头信息dosHeader;

调用系统函数ReadFile读取所述自加载模块的dos头信息dosHeader;

定义所述自加载模块的nt头信息ntHeader;

调用系统函数ReadFile读取所述nt头信息ntHeader;

通过所述nt头信息ntHeader获取所述自加载模块的节信息;

调用系统函数ReadFile读取所述节信息到内存中;

记录所述自加载模块的内存地址。

5.根据权利要求4所述的方法,其特征在于,所述通过所述nt头信息ntHeader获取所述自加载模块的节信息包括:通过所述nt头信息ntHeader获取所述自加载模块的模块文件大小nFileSize;

通过所述nt头信息ntHeader获取所述自加载模块的节的数目nSectionNum;

通过所述nt头信息ntHeader获取所述自加载模块的头结构信息的大小nHeaderSize;

通过所述nt头信息ntHeader获取所述自加载模块的内存对齐大小nSectionAlign。

6.根据权利要求1至5中任一项所述的方法,其特征在于,所述对所述自加载模块的重要地址表IAT的导入表进行修复,得到修复后的导入表包括:获取重要地址表IAT的导入表的内存偏移量;

根据所述导入表的真实地址和所述内存偏移量确定内存地址;

获取所述导入表的结构描述信息pImport;

根据所述结构描述信息pImport和所述内存地址对所述导入表进行遍历,并填入导入表项得到修复后的导入表。

7.根据权利要求4或5所述的方法,,其特征在于,所述对所述自加载模块的重定位表格进行修复,得到修复后的重定位表格包括:根据nt头信息得到所述自加载模块的重定位表格的偏移地址dwReclocRVA;

根据所述自加载模块的内存地址和所述偏移地址dwReclocRVA得到重定位的地址pReloc;

对所述重定位表格进行遍历,得到修复后的重定位表格。

8.一种获取自加载模块函数的装置,其特征在于,包括:划分单元,用于将目标应用程序中使用的网络协议按照重要程度分为重要协议和不重要协议,其中,所述重要协议用于通过自加载模块处理,所述不重要协议用于通过系统模块进行处理,所述自加载模块和所述系统模块相同;

保存单元,用于保存所述系统模块的套接字socket的功能函数地址,所述功能函数地址包括发送send函数地址和接收recv函数地址;

读取单元,用于将所述自加载模块按照内存对齐的方式读取模块到内存中并记录所述自加载模块的内存地址;

第一修复单元,用于对所述自加载模块的重要地址表IAT的导入表进行修复,得到修复后的导入表;

第二修复单元,用于对所述自加载模块的重定位表格进行修复,得到修复后的重定位表格;

获取单元,用于根据所述系统模块的套接字socket的功能函数地址、所述自加载模块的内存地址、所述修复后的导入表和所述修复后的重定位表格获取所述自加载模块的send函数地址和recv函数地址。

9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-7任意一项所述的方法。

10.一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如权利要求1-7任意一项所述的方法。