Мое решение будет следующим:
Возьмите известный веб-браузер: firefox.exe
скопируйте его под новым именем: icefoxy.exe
изменить EXE, чтобы он загружал пользовательскую DLL.
Я уже делал это несколько месяцев назад, нопоскольку Firefox постоянно получает обновления, это означает:
ИЛИ: сохраняйте одну версию и не обновляйте (на свой страх и риск, это может вызвать проблемы с безопасностью, поскольку это означает, что уязвимости не будут исправлены)
ИЛИ: обновляйте свою модификацию каждый раз, когда изменяется firefox.exe.
DLL легко записывается с использованием Delphi.
Для модификации Firefox необходим язык ассемблера, если вы не знаете, как загрузить все необходимые файлы вСкомпилируйте Firefox самостоятельно, получите доступ к компилятору C / C ++ (вероятно, mingw-gcc) и будьте готовы к тому, что существует 2 взаимоисключающих стандарта C ++, и если ваш g ++ (часть набора gcc) несовместим с вашимFirefox source, тогда ваша попытка потерпит неудачу.
Я сам не эксперт C ++, поэтому я выбрал (по крайней мере для меня) более простой маршрут с использованием машинного языка, поэтому мне не нужно быть C/ C ++ Эксперт, чтобы выполнить работу.
Некоторые относительные моменты:
Какие функции должны быть перехвачены, чтобы перехватить весь доступ Firefox к DNS-серверам?
Я заметил, что если вы загружаете Delphi DLL в Icefoxy.exe (переименованная копия Firefox.exe), то цвета формы Delphi отсутствуют, например.если вы установите (либо в объекте ispector, либо в коде):
Label1.Color: = clLime;
, вы все равно увидите метку с ВНЕШНИМ фоновым цветом.Я не знаю точной причины, но кажется, что Delphi VCL полагается на использование в EXE, и когда вы используете компоненты Delphi VCL внутри DLL вместо EXE, некоторые вещи (например, цвет) не работают должным образом.
Я был бы рад опубликовать мой код (как модификации на ассемблере для Firefox, так и исходный код Delphi DLL), но как / где я могу опубликовать его, чтобы он был общедоступным?
Я использовал Delphi 7 для создания DLL.
если вы используете Delphi 2009 или более позднюю версию, вам нужно быть особенно внимательным, чтобы любые строковые данные, передаваемые между кодом Delphi и любым не-Delphi кодом, имели правильную кодировку,из-за того, что в Delphi 2009 и во всех более новых версиях тип String является псевдонимом unicodestring, а в более старых версиях Delphi тип String является псевдонимом AnsiString.
В то время, когда я это делал,это был всего лишь небольшой эксперимент, чтобы выяснить, могу ли я заставить Firefox загрузить собственную DLL-библиотеку в адресное пространство процесса.
Другая интересная идеяЧтобы получить доступ к DOM (объектной модели документов) Firefox из DLL-библиотеки Delphi, это даст рабочую альтернативу использованию TWebBrowser (на основе ActiveX-версии Microsoft Internet Explorer).
Я знаю, что былитакие компоненты, как TWebBrowser, основаны на Firefox, но их проблема в том, что никто не заботился об их обновлении в течение очень долгого времени, поэтому они совместимы только с какой-то очень устаревшей версией Firefox.