Browser Helper Objects(BHO)

Regsvr32

Regsvr32命令用于注册动态链接库文件,是Windows系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行。

用法:

regsvr32 [/u] [/s] [/n] [/i[:cmdline]] dllname
  • /u -解除服务器注册
  • /s -无声;不显示消息框
  • /i -调用DllInstall,给其传递一个可选[cmdline];跟/u参数一起使用时卸载DLL。
  • /n -不用调用DLLRegisterServer。这个参数必须跟/i一起使用。
  • /? -查看帮助信息
  • dllname -Activex控件文件名。

Notes + 建议在安装前拷贝到system文件夹下。 + 需要管理员权限。

BHO

注册之后的BHO会在注册表下注册一个CLSID

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{66DFF559-A157-41A1-B07E-A8C06E82501E}]
@="FlashRedirctBho"
"NoExplorer"=dword:00000001

rgs文件

FlashRedirectObj.FlashBho.1 = s 'FlashBho Class'
{
    CLSID = s '{66DFF559-A157-41A1-B07E-A8C06E82501E}'
}
FlashRedirectObj.FlashBho = s 'FlashBho Class'
{
    CLSID = s '{66DFF559-A157-41A1-B07E-A8C06E82501E}'
    CurVer = s 'FlashRedirectObj.FlashBho.1'
}

BHO调试

BHO在需要时由iexplore.exe加载,IE8之后在Iexplore中每一个Tab Tag都是一个独立的进程,进程名都是iexplore.exe。需要使用tlist /t命令查看进程树。

使用VS的“Attach to Process...”进行调试即可。进入断点后,用tlist pid可看到Tab Tag进程加载的BHO对应的DLL文件

浏览器进程不会一直加载BHO对应的DLL,仅在调用时加载。