Using BHODemon

Definitive Solutions, Inc.

June, 2002

 

 

 

What is BHODemon?

 

Think of BHODemon as a guardian for your Internet browser: it protects you from unknown Browser Helper Objects (BHOs), by letting you enable/disable them individually.  BHODemon is free, runs in the "tray" area, and works on Windows 95 or later operating systems. (For Windows 95, you will probably need a recent version of Internet Explorer.)

 

 

Installing and Uninstalling

 

BHODemon consists of these files:

To uninstall BHODemon, simply delete all of the above files.  BHODemon does not write anything OF ITS OWN to your Registry. (It does, of course, write to your Registry to disable BHO's - that's what it's suppossed to do!)

 

 

Basic description of BHOs

 

This is a simple description of BHOs, which should be suitable to any reader.

 

A Browser Helper Object, or BHO, is just a small program that runs automatically every time you start your Internet browser.  Usually, a BHO is installed on your system by another software program.  For example, Go!Zilla, the downloading utility, installs a BHO created by Radiate (formerly Aureate Media); this BHO tracks which advertisements you see as you surf the Web.

 

The natural question is, what do BHOs do?  The technical answer is "anything", but generally, it will have something to do with helping you browse the Internet.   Of course, some BHOs are what is called "ad-ware" or "spyware": they do things like monitor the websites you visit and report this data back to their creators, or display advertisements. 

 

Although many people are extremely concerned about them because of the privacy issue, BHOs are not necessarily bad things, and most of them are well-intentioned and beneficial.  For example, the P3P ("Platform for Privacy Preferences") program spearheaded by the W3C (World Wide Web Consortium) and major vendors, including Microsoft, AT&T, and IBM, will be delivered as a BHO.  Some BHOs, however, are placed secretly on your system, and there is certainly no technical reason why they could not be programmed to send information about your system (or your web surfing habits) over the Internet without your knowledge.

 

Also, there is no restriction on what a BHO can do your system; it can do anything any other program can do: read or write (or delete) anything on your system.  Usually, software is installed on your system explicitly by you; when you do so, you are, in effect, saying that you trust the vendor.  BHOs, however, have a history of being installed without the users knowledge (fine print notwithstanding). 

 

Given that (a) BHOs can do absolutely anything to your system, and (b) they are often installed without your knowledge, there is a distinct potential for abuse by vendors.  The problem is, until now you had no way of knowing which BHOs are on your machine, who put them there, and what they do.  This is what BHODemon does - it lets you easily manage your BHOs.

 

 

What does BHODemon do?

 

BHODemon scans your Registry for BHOs, and presents any it finds in a list.  By highlighting a BHO in this list, and clicking the "Details" button, you can see information about this BHO, and even disable it if you wish.  BHOs are disabled by simply renaming the DLL that houses them.  By renaming the DLL, instead of deleting it, you have the option of enabling it later if you wish.  Why would you want to do that?  Because the program that installed the BHO will not run if it can't find the DLL: Go!Zilla, for example, won't run if you remove its BHOs.

 

 

Advanced description of BHOs

 

This is a technical description of BHOs, and is targeted at software developers.

 

First, a BHO is a simply COM "in-process" server, stored in a DLL.  The Internet Explorer (and, surprisingly, the Windows Explorer) looks in a specific place in the Registry when it starts up, and loads all the BHOs it finds there.  It then passes its IUnknown pointer to each BHO using the IObjectWithSite interface; the BHO uses this pointer to retrieve interfaces like IWebBrowser2, IDispatch, and IConnectionPointContainer from the browser.  Using those interfaces it can then navigate the web and automate Internet Explorer.  Of course, since there is no "sandbox" for BHOs, they can call any Windows API they desire, and do anything any other program can do.

 

One significant drawback to BHOs is that they are "in-process".  Since they are packaged in a DLL, a GPF in a BHO will of course crash the hosting EXE (in this case, Internet Explorer).  For this reason, a better approach is to create a tiny BHO that does nothing but instantiate an out-of-process COM server (EXE file), marshalling to it whatever interfaces are desired.  This way, if the EXE-based "BHO" crashes, it does not cause Internet Explorer to crash.

 

 

Links

 

 

Legal Notices and Contact Information

This product is supplied "as is".  The author disclaims all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose.  The author assumes no liability for damages, direct or consequential, which may result from the use of this product.

For any questions or problems, please contact us at Support@DefinitiveSolutions.com .

 

Copyright © 2002 Definitive Solutions, Inc.

All Rights Reserved