一种基于Hook的windows系统IE插件信创环境兼容性评估方法
文献发布时间:2024-04-18 20:00:50
技术领域
本发明涉及IE插件兼容性评估领域,特别涉及一种基于Hook的windows系统IE插件信创环境兼容性评估方法。
背景技术
目前浏览器应用国产化IE浏览器插件迁移(从Windows平台IE浏览器迁移到国产操作系统(Linux内核)国产浏览器(Chrome内核))的工作量评估还是采用人工测试方式,人工测试方式存在获取的插件调用列表不完全,插件调用细节不清晰的问题,无法精确知道浏览器应用哪些插件需要迁移,以及插件中哪些API需要迁移,因此提出一种基于Hook的windows系统IE插件信创环境兼容性评估方法。
发明内容
本发明的目的在于提供一种基于Hook的windows系统IE插件信创环境兼容性评估方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于Hook的windows系统IE插件信创环境兼容性评估方法,所述评估方法包括以下几个步骤;
S1:安装迁移探测器,所述迁移探测器包括IE浏览器BHO插件和本地数据分析服务;
S2:使用Hook模块hook ole32.dll的CoGetClassObject;
S3:通过IE浏览器打开需要分析的浏览器页面;
S4:在CoGetClassObject的调用回调中获取调用ActiveX插件信息;
S5:根据获取的插件classid hook ActiveX插件invoke和GetIDsOfName;
S6:浏览器页面调用ActiveX插件的add;
S7:在invoke和GetIDsOfName的回调函数中获取add方法调用情况;
S8:根据插件调用信息和插件中API调用信息评估出插件迁移的工作量。
优选的,所述IE浏览器BHO插件包括COM组件Hook模块、插件信息收集模块和页面信息收集模块。
优选的,所述本地数据分析服务是收集本机上安装的ActiveX、Ocx插件列表和Ocx插件详情,所述本地数据分析服务接收BHO插件中发送过来的插件调用信息。
优选的,所述插件信息收集模块通过COM组件Hook模块获取被调用的插件classid、调用插件的源码、插件被调用的方法ID和方法调用次数,且插件详情需要通过本地分析服务中的本机插件收集模块获取。
优选的,所述页面信息收集模块可以收集页面信息,包括页面url、标题和页面加载时间,其所述页面信息和插件调用信息关联。
优选的,所述CoGetClassObject的hook使用BHO插件进行。
优选的,所述浏览器页面初始化ActiveX和Ocx控件对象。
优选的,所述调用ActiveX插件信息的获取首先是通过BHO插件hook模块收到ActiveX和Ocx控件初始化回调,然后在回调函数中获取ActiveX和Ocx控件classid,最后通过classid获取浏览器页面调用的ActiveX和Ocx控件信息。
优选的,所述add方法调用情况的获取过程是首先BHO插件Hook模块收到invoke和GetIDsOfName方法回调,然后记录浏览器页面ActiveX和Ocx控件的add方法被调用,并记录调用次数。
优选的,所述API调用信息包括插件中被调用方法信息和方法调用次数信息。
本发明的技术效果和优点:
(1)本发明通过获取到的浏览器应用调用的插件和调用的插件方法信息,可以精确评估浏览器应用从Windows平台IE浏览器向国产操作系统平台国产浏览器所需的工作量,可以精确知道调用的浏览器插件信息。
(2)本发明需要迁移的插件包含的API可能比较多,没有被调用的API不需要迁移,插件API调用信息告诉我们哪些API被调用了、调用了多少次,通过这些信息,可以知道哪些API需要迁移,极大的减少的插件迁移工作量。
附图说明
图1为本发明兼容性评估方法的操作流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了如图1所示的一种基于Hook的windows系统IE插件信创环境兼容性评估方法,评估方法包括以下几个步骤;
S1:安装迁移探测器,迁移探测器包括IE浏览器BHO插件和本地数据分析服务;
IE浏览器BHO插件包括COM组件Hook模块、插件信息收集模块和页面信息收集模块。
插件信息收集模块通过COM组件Hook模块获取被调用的插件classid、调用插件的源码、插件被调用的方法ID和方法调用次数,且插件详情需要通过本地分析服务中的本机插件收集模块获取;
页面信息收集模块可以收集页面信息,包括页面url、标题和页面加载时间,其页面信息和插件调用信息关联,这样可以知道哪个页面调用了哪些插件,哪些插件被调用了哪些方法,以及方法调用次数。
本地数据分析服务是收集本机上安装的ActiveX、Ocx插件列表和Ocx插件详情,本地数据分析服务接收BHO插件中发送过来的插件调用信息,本地分析服务结合这两种信息可以知道插件被调用的信息、插件中方法被调用的信息,插件中方法被调用的次数和插件的详情和方法详情。
S2:使用Hook模块hook ole32.dll的CoGetClassObject,CoGetClassObject的hook使用BHO插件进行;
实施例一;IE Activex和Ocx插件都是COM组件,CoGetClassObject是调用COM的入口方法,STDAPI CoGetClassObject(REFCLSID rclsid,
DWORD dwClsContext,
COSERVERINFO*pServerInfo,
REFIID riid,
LPVOID*ppv);
CoGetClassObject方法有一个参数rclsid是Com组件的classid,通过HookCoGetClassObject方法可以得到classid,将classid和本地获取的插件列表的classid做比较,如果找到一个插件的classid和hook得到的classid一致,则说明浏览器的一个插件被调用了。
S3:通过IE浏览器打开需要分析的浏览器页面,浏览器页面初始化ActiveX和Ocx控件对象;
S4:在CoGetClassObject的调用回调中获取调用ActiveX插件信息;
调用ActiveX插件信息的获取首先是通过BHO插件hook模块收到ActiveX和Ocx控件初始化回调,然后在回调函数中获取ActiveX和Ocx控件classid,最后通过classid获取浏览器页面调用的ActiveX和Ocx控件信息。
S5:根据获取的插件classid hook ActiveX插件invoke和GetIDsOfName;
S6:浏览器页面调用ActiveX插件的add;
S7:在invoke和GetIDsOfName的回调函数中获取add方法调用情况;
add方法调用情况的获取过程是首先BHO插件Hook模块收到invoke和GetIDsOfName方法回调,然后记录浏览器页面ActiveX和Ocx控件的add方法被调用,并记录调用次数。
S8:根据插件调用信息和插件中API调用信息评估出插件迁移的工作量;
插件调用信息指什么插件被调用了,调用了多少次,add应该后面的API调用信息,add只是一个举例,指插件中一个方法,插件中方法也可能是其他;
API调用信息包括插件中被调用方法信息和方法调用次数信息。
实施例二;需要迁移的插件可能有100个方法,实际调用的方法只有5个,那么迁移时只需要迁移5个被调用的方法,其他方法不需要迁移,可以减少不必要的迁移的工作量。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种快速分离和提取表层水体中微塑料的装置和方法
- 一种农田土壤中微塑料的提取装置及提取方法
- 一种土壤中微塑料的提取装置及提取方法