Posts tagged: BHO

Программная активация BHO

By , 28 ноября, 2014 00:18

В последних версиях Internet Explorer для полноценной установки BHO недостаточно зарегистрировать DLL и добавить его в список расширений в реестре: для начала работы требуется, чтобы юзер его активировал. Я нашел решение этой проблемы.
Допустим, у нас имеется расширение со следующим CLSID:

Далее нам потребуются два ключа — текстовый и бинарный. Текстовый ключ содержит строку «Only Internet Explorer code should write this user setting. See http://go.microsoft.com/fwlink/?LinkId=159651 for more details.», а бинарный содержит два идущих друг за другом DWORD со значениями 0×00000001 и 0×00000009 соответственно, после чего идет CLSID расширения. Таким образом, бинарный ключ занимает 24 байта (8 байт на два DWORD + 16 байт на CLSID):

Также для работы нам потребуется получить SID текущего пользователя в текстовом виде. Функция весьма проста, вот её код:

В вышеприведенной функции GetLogonSID и FreeLogonSID — функции-врапперы, предназначенные для получения SID по переданному токену. После получения необходимых данных можно начать формирование ключа. Объявим необходимые переменные:

Прежде всего, разумеется, нужно получить текстовое представление SID’а пользователя:

После этого заполняется 24-байтовый массив результата. Каждый байт — результат операции XOR над соответствующим байтом бинарного ключа, соответствующим байтом текстового SID и соответствующим байтом текстового ключа. Значение счетчика текстового ключа нужно сохранить:

После этого результат нужно поксорить с оставшейся частью текстового ключа. Если в цикле мы достигаем конца результата — начинаем ксорить снова с первого элемента. Эту работу выполняет следующий код:

Теперь ключ готов. Его необходимо записать, как параметр типа REG_BINARY, в ключ реестра HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Approved Extensions. Название параметра — это GUID расширения, а его значение — получившийся в результате ключ:

Функция SetKeyWritable выставляет разрешения на запись параметров данного ключа. Вот её код:

Вот и всё — эта техника позволяет обойти запрос разрешения на запуск BHO в Internet Explorer.

Panorama Theme by Themocracy