admin管理员组

文章数量:1531374

2024年2月8日发(作者:)

xp在中国还是量非常大,但是xp默认是ie 6 内核,所以很多网页为了兼容ie6 做了特殊支持,但是基于ie内核开发的浏览器就比较痛苦了,某些com接口会存在各式各样的问题。360做了个创新,自带ie8内核,自从他做了这个功能后,国内其他的浏览器一股脑儿都做了这个功能。 自带ie8 内核,ie8本身涉及到的dll非常多,所以必须做成个小安装包,然后在安装自己的浏览器的时候,判断是否是xp并且浏览器是ie8以下,如果满足这样的条件,再去服务器把ie8内核安装包拉下来进行安装 这个功能是个体力活 涉及到的dll包括如下:

以上dll就是基于ie 8 内核用到及依赖的dll

要想自己的基于ie 组件开发的浏览器能够不加载默认的ie6 内核,而加载ie 8 内核,hool

api是必然的,改变进程的行为,反正这个进程是自己的,所以在自己的进程进行hook比较简单了,不需要注入,直接detours搞定,比较顺手,也不用考虑杀毒之类的拦截问题。

hook的api如下

LdrUnloadDll;

LdrGetDllHandle;

LoadLibraryExW;

LoadLibraryExW_Kernelbase;

SearchPathW;

RegOpenKeyExA; // advapi

RegOpenKeyExW; // advapi

RegCreateKeyExA; // advapi

RegCreateKeyExW; // advapi

RegOpenKeyExA_Kernel32;

RegOpenKeyExW_Kernel32;

RegCreateKeyExA_Kernel32;

RegCreateKeyExW_Kernel32;

NtOpenSection;

大致的思路比较简单,当浏览器进程在加载ie6相关的dll或者获取dll相关信息的时候,让他加载ie8相关的dll,这些调用包括LdrUnloadDll,LdrGetDllHandle,LoadLibraryExW,LoadLibraryExW_Kernelbase;

除了加载dll的时候,读取注册表,也需要做处理,也就是让浏览器读注册表的时候能够转到类似ie8的注册表结构目录

本文标签: 内核浏览器时候注册表加载