[发明专利]一种Linux内核动态注入方式截取无线数据包的方法有效
申请号: | 201910322202.0 | 申请日: | 2019-04-22 |
公开(公告)号: | CN110083363B | 公开(公告)日: | 2022-04-01 |
发明(设计)人: | 周华雄;陈陵;徐洪;李松洲;黄志成;梁伟荣;郭晓东;卜祥 | 申请(专利权)人: | 珠海网博信息科技股份有限公司 |
主分类号: | G06F8/53 | 分类号: | G06F8/53;H04W24/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 519000 广东省珠海市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种Linux内核动态注入方式截取无线数据包的方法,不依赖Linux操作系统原有功能及无线网卡驱动提供的对外输出无线通信包即可获取广播报文,本发明在不修改原无线网卡驱动代码的前提下,通过Linux内核驱动层动态注入代码方式修改其原接收处理方法入口代码为转跳指令,转跳至插入的分析代码,处理强结束后还原原方法入口处的代码最后再转跳回去,从而实现无线通信包的截取而不影响原网卡驱动的处理逻辑。 | ||
搜索关键词: | 一种 linux 内核 动态 注入 方式 截取 无线 数据包 方法 | ||
【主权项】:
1.一种Linux内核动态注入方式截取无线数据包的方法,其特征在于,该方法包括如下步骤:步骤(010):导出驱动模块符号:使用Linux操作系统提供的系统工具命令导出待分析的无线网卡驱动模块文件的所有方法名称符号,所述方法名称符号为驱动模块程序的关键字,关键字包括程序的变量名称、函数名称、对象的方法、事件或者属性;步骤(020):根据导出的方法名称符号排查网络处理入口,在所述网络处理入口中搜索驱动模块程序中的关键字;或:通过正则表达式搜索并提取驱动模块程序的关键字;或:通过正则表达式提取驱动模块程序的关键字;步骤(030):对驱动模块进行反汇编,得到网络处理入口处的方法名称符号,再利用系统工具命令得到该入口处的方法名称符号的机器指令及汇编代码;步骤(040):编写一个测试用Linux内核模块,所述测试用Linux内核模块的作用是验证该唯一机器指令码能否在Linux内核中查找并定位到该网络处理入口,和/或用于分析传入参数中的哪一个是指向网络包原始数据;动态注入部分:步骤(101),注入模块的开始:加载注入模块程序代码,对步骤(201)处的程序逻辑进行初始化;步骤(102):对原无线网卡驱动接收处理方法,开始扫描整个Linux内核内存空间,查找分析得到的代码特征数据,定位网络处理入口的真实内存代码地址;步骤(103):对定位到的网络处理入口地址处的首条机器指令代码复制到步骤(206)的内存位置上;步骤(104):再对接收处理方法的当前内存代码地址的首条代码修改为转跳指令,转跳目的地址为步骤(201);分析部分:步骤(201):注入模块的分析部分代码入口,由原无线网卡驱动模块接收处理入口被修改后转跳到这里;步骤(202):在进行注入分析前保留CPU的当前工作状态,即把所有通用寄存器的当前值保存到内存区,在还原时使用;步骤(203):根据对原无线网卡驱动模块静态分析的结果获得原方法输入参数中网络链路层地址所在的通用寄存器名称,直接复制链路层数据;步骤(204):对得到的网络链路层数据做预分析处理后,向Linux用户态目标进程发送截取到的数据包,由具体的用户进程进行进一步分析处理;步骤(205):至此,网络数据包的截取工作完成,进入还原CPU现场回跳工作,恢复在步骤(202)时保存的所有的通用寄存器值;步骤(206):此处的机器指令代码为原网络处理入口的第一条指令,是步骤(103)复制过来的,执行还原原处理方法过程;步骤(207):最后通过一条转跳指令跳回原接收处理方法的第二条指处,把CPU执行权交回到原处理方法上;注入结束部分:步骤(301):收到应用层的结束通知后结束注入模块工作,还原所有注入修改;步骤(302):还原原接收处理代码入口处的第一条代码指令。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海网博信息科技股份有限公司,未经珠海网博信息科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910322202.0/,转载请声明来源钻瓜专利网。