Wednesday, January 14, 2009

Interview With an Adware Developer

Check out this great interview with an adware developer. (thanks for the link, Adam)

Lots of juicy technical details in this interview. It's been years since I worked with Windows code but some parts were familar:

IE has a mechanism called a Browser Helper Object (BHO) which is basically a gob of executable code that gets informed of web requests as they’re going. It runs in the actual browser process, which means it can do anything the browser can do– which means basically anything. We would have a Browser Helper Object that actually served the ads, and then we made it so that you had to kill all the instances of the browser to be able to delete the thing.

Back in my WebTaggers days we used the BHO api as well. When the BHO interface first came out, there were all these wonderful ideas that it generated, like "you could load a bunch of post-it notes created by you and your friends every time you visit a web page!" - but the BHO turned out to be more widely employed by the dark side. I have to wonder if MS really considered the potential to use the BHO as more of weapon than a tool when they were designing it.

And other stuff like this reinforces my position that Windows is a threat to public health:

...The Win32 API is fundamentally Ascii. There are strings that you can express in 16-bit counted Unicode that you can’t express in ASCII. Most notably, you can have things with a Null in the middle of it.

That meant that we could, for instance, write a Registry key that had a Null in the middle of it.
Because of that, we were able to make registry keys that were invisible or immutable to anyone using the Win32 API. Interestingly enough, this was not only all civilians and pretty much all of our competitors, but even most of the antivirus people.

Then he drops this awesomebomb:

Eventually, we got sick of writing a new C program every time we wanted to go kick somebody off of a machine. Everybody said, “What we need is something configurable.” I said, “Let’s install a Turing-complete language,” and for that I used tinyScheme, which is a BSD licensed, very small, very fast implementation of Scheme that can be compiled down into about a 20K executable if you know what you’re doing.

I wonder if he released his improvements to tinyScheme as open source.

Anyways I recommend reading the entire interview.


  1. Thanks a lot for writing about useful, good subject. It needs to know that outsourcing software development could help in your business by installing customized software solutions.

  2. Thank you for sharing with useful info. It is required to know that ipad application developer could help in your business by installing customized software solutions.

  3. There are many aspects about the job.

    seo reseller

  4. I bet the interview went well. I like the smoothness of the flow of the interview. Great job.
    seo packages

  5. Thank you a lot for providing individuals with a very spectacular possibility to read critical reviews from this site.
    java training in bangalore java training in bangalore