Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Version.dll / Chrome++ для Chrome и иных Chromium браузеров

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

Открыть новую тему     Написать ответ в эту тему

insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chrome++ DLL для портаблезации Chrome и иных Chromium-based браузеров.

Chrome-браузеры в файле "Secure Preferences" сохраняют хеш на основе конкретного пользователя конкретной установленной ОС. При запуске в другом пользователе или ОС браузер обнаруживает несоответствие старого хеша и затирает "Secure Preferences" целиком! Соответственно, теряются все установленные расширения и часть настроек, потому что именно от него они зависят. Так же могут затираться куки и сохранённые данные логинов+паролей. Именно Version.DLL не даёт браузеру потерять настройки с расширениями.
Помимо этого при использовании Version.dll отпадает необходимость указывать --user-data-dir=<путь>, по умолчанию она будет в ..\Data и ..\Cache (уровнем выше от chrome.exe). Эти пути можно менять на свои в ini файле. Так браузер можно запускать прямо по ехе, без дополнительных лаунчеров или батников.
 
Работоспособность проверена на: Brave, CentBrowser, Chromium (dev), GDIChromium, Google Chrome, Iron, Supermium, Ungoogled Chromium, Vivaldi и других.
* Существуют несколько "особенных", где version.dll затруднено либо бесполезно: MS Edge, QQ, 360EE.
 
Актуальные (Cr118+): Версия Описание Обновления Страница загрузки Прямые ссылки **    
Chrome++ от Bush2021 (release) Почитать История Скачать x86, x64, chrome++.ini    
Version.dll от nekto78 (release) Почитать История Скачать x86, x64, version.ini    
Vivaldi++ от ca-x (czyt) (release) Почитать История Скачать x86, x64    
Vivaldi++ от ca-x (czyt) (nightly) Почитать История Скачать x86, x64      
Chrome++ от jestxfot (release) Почитать История Скачать x86, x64

** Прямые ссылки - только для опытных пользователей. Если вы не знаете, какой файл нужен, читайте инструкцию и скачивайте релиз со страницы загрузки!
 
Архив версий (перезаливы)
 
Инструкция:
1. Положить version.dll возле chrome.exe / brave.exe / vivaldi.exe / <...>
2. Запустить браузер по exe
Готово! Пользоваться и радоваться результату.
По вкусу можно поковырять ini.
F.A.Q. по ini-файлам
 
Внимание!
• Для 32-битной версии использовать 32-битную version.dll, а для х64 - соответственно х64. Не путать!
Имя файла должно быть именно "version.dll"! Не "version.32.dll". Не "version.64.dll". Не "chrome++.dll". Не какое-то ещё. Только "version.dll"!
• Если хочется оставить старый настроенный профиль, не забывайте сначала сделать его бэкап! Затем при первом запуске нужно будет установить расширения заново. Не забывайте предварительно позаботиться о сохранении паролей/куков, если нужны.

Всего записей: 20030 | Зарегистр. 04-11-2010 | Отправлено: 02:18 02-01-2023 | Исправлено: insorg, 22:21 09-06-2025
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a_nester
Цитата:
Что он там совершенствует - НЕПОНЯТНО!

причём тут он? если это хромиум разрабы совершенствуют

Всего записей: 7633 | Зарегистр. 11-02-2020 | Отправлено: 16:50 23-09-2025
a_nester



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greeple,

Цитата:
причём тут он? если это хромиум разрабы совершенствуют

В каждой у него версии, а что конкретно...?...самому ему только известно) :

Цитата:
Исправление некоторых вопросов и оптимизация деталей

Почему-то в других хромиумклонах всё работает стабильно, без всяких "танцев с бубном")
 

Всего записей: 1047 | Зарегистр. 08-10-2016 | Отправлено: 17:03 23-09-2025
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a_nester
Цитата:
В каждой у него версии, а что конкретно...?...самому ему только известно) :

в том ответе он написал не за себя же, а что в хромиумах изменяется и встраивание будет сложнее, а не то что он что-то делает, в ядро клоны не лезут

Всего записей: 7633 | Зарегистр. 11-02-2020 | Отправлено: 19:43 23-09-2025
a_nester



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greeple,
Так мне одно не понятно! : обычно на понижение версии с новым профилем не работает, а здесь наоборот с повышением версии старый профиль не работает... Получается, что v.5.9.3 и v.5.10.1 не хотят запускаться с User Data от v.5.9.2 .... ну можно понять, почему не запускается к примеру v.5.9.2 с User Data от v.5.10.1, а тут выходит наоборот... Чтоб запустилась v.5.10.1 пришлось удалить User Data от v.5.9.2 и всё по новой настраивать...  И где здесь логика...?)

Всего записей: 1047 | Зарегистр. 08-10-2016 | Отправлено: 20:11 23-09-2025
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a_nester
ну если что-то меняется в новых версиях то почему всегда должно работать?

Всего записей: 7633 | Зарегистр. 11-02-2020 | Отправлено: 20:23 23-09-2025
nekto78



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greeple

Цитата:
ну если что-то меняется в новых версиях то почему всегда должно работать?

Ну хотя бы потому что в них встроена как правило не отключаемая функция обновления.

Всего записей: 673 | Зарегистр. 10-02-2006 | Отправлено: 15:02 24-09-2025 | Исправлено: nekto78, 15:03 24-09-2025
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nekto78
я про то что, если в хромах будет изменяться что-то в плане кода, то при обнове и версион инжекты не факт что будут работать без фиксов, не может оно работать нормально если там что-то изменят

Всего записей: 7633 | Зарегистр. 11-02-2020 | Отправлено: 16:53 24-09-2025
nekto78



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greeple

Цитата:
я про то что, если в хромах будет изменяться что-то в плане кода, то при обнове и версион инжекты не факт что будут работать без фиксов, не может оно работать нормально если там что-то изменят

В коде хрома всегда что-то меняется от версии к версии, при том именно в ядре. Многие из этих изменений - это устранение багов (которые на некоторых страницах проверки по какой-то причине отображаются в списке уязвимостей) после добавления новых функций и немногие - это либо палки в колёса инжекторов (типичный пример +118) или гвозди в гроб семёрки (на хабре есть статьи на эту тему) и еще меньшая часть - это устранение уязвимостей

Всего записей: 673 | Зарегистр. 10-02-2006 | Отправлено: 17:15 24-09-2025 | Исправлено: nekto78, 17:25 24-09-2025
lz57005



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nekto78, принимаете запрос на функционал?  
1. вместо хардкодед version.ini - имя конфига по имени dll, для удобства на случай альтернативной инжекции и переименовывания version.dll
2. вынести имя компьютера в конфиг и возвращать в хуке типо:
 
function GetComputerNameW(lpBuffer: PWideChar; var nSize: DWORD): BOOL; stdcall;
var NewNameLen,RequiredSize: DWORD;
begin
 if COMPNAME='' then result := False else
  begin
  NewNameLen := Length(COMPNAME);
  RequiredSize := NewNameLen + 1;
  if nSize < RequiredSize then
  begin
    nSize := RequiredSize;
    Result := False;
    Exit;
  end;
  StrPCopy(lpBuffer, COMPNAME);
  nSize := NewNameLen;
  Result := True;
  end;
end;  
 
Суть - при включённой синхронизации несколько копий браузера будут корректно видны как разные устройства, вместо одинаковых "Windows NT", облачные вкладки выглядят приятнее, тестил на яндекс браузере.
 
3. Запрет на чтение веток реестра по списку или хотя бы одной SOFTWARE\Policies, чтобы браузер не мог подтягивать политики там где они настроены
 
4. Добавить простые хуки заглушки для RegisterEventSourceW/A, ReportEventW/A (Advapi32.dll) , чтобы процесс браузера не мог писать события в системный журнал

Всего записей: 76 | Зарегистр. 09-04-2012 | Отправлено: 17:07 29-09-2025 | Исправлено: lz57005, 22:19 29-09-2025
nekto78



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lz57005
Приветствую.
1, 2, 3, 4  - теоретически всё это реализуемо и выгдядит даже как полезные функции. Возможно возьмусь за реализацию в такой последовательности 4, 3, 1, 2 в зависимости от усложнения кода.
 
Cейчас исследую исходники хромого на предмет перехвата или отключения посредством прокси доступа браузера к системной службе DNS (это нужно чтобы в браузере начал работать его собственный резольвер и соответственно перехват DNS запросов к серверам гугла).

Всего записей: 673 | Зарегистр. 10-02-2006 | Отправлено: 07:52 30-09-2025 | Исправлено: nekto78, 10:12 01-10-2025
lz57005



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nekto78
1, 2 - https://www.upload.ee/files/18651164/Source_X64.7z.html
но Uses SysUtils (+100кб) я так понял вы избегали включения лишних модулей ради размера dll
 
и абстрактный вопрос - а почему во всех прокси библиотеках  используется перезапуск браузера с параметрами вместо хука GetCommandLine (и если существуют схожих апи) чтобы просто подусунуть ему новые ключи? исторически или оно не отрабатывает...

Всего записей: 76 | Зарегистр. 09-04-2012 | Отправлено: 09:09 30-09-2025
nekto78



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lz57005
Да, подключение дополнителтных модулей не использую именно для компактности, тем более что без них можно реализовать практически всё что необходимо.
На счет хука GetCommandLine в самом начале думал, но не проверял (или проверял и понял что не работает... сейчас не помню уже, нужно перепроверить)
 
Для проверки добавил перехват функций RegisterEventSourceW/A, ReportEventW/A с выводом сообщения при перехвате функций. Но выполнение перехваченных функций так и не произошло. Или из-за того, что не произошло нужное событие или, что скорее всего, из-за того, что модуль Advapi32.dll отсутствует в таблице статического импорта хрома и соответственно перехват всех функций из этого модуля работать не будет (в том числе функций чтения из реестра).
 
Реализацию GetComputerNameW GetComputerNameA без подключения дополнительных модулей можно сделать так
Код функций
Это для 32-х битной версии, для 64-х битной вероятно нужно подправить.
 
В буфер данные точно записываются, но подозреваю что это локальный экземпляр и в объявлении функции нужно сделать так
Код:
function GetComputerNameW(var lpBuffer: PWideChar; var nSize: DWORD): BOOL; stdcall;

Проверьте если не сложно.

Всего записей: 673 | Зарегистр. 10-02-2006 | Отправлено: 11:27 30-09-2025 | Исправлено: nekto78, 18:34 01-10-2025
Faenza

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a_nester

Цитата:
Чтоб запустилась v.5.10.1 пришлось удалить User Data от v.5.9.2 и всё по новой настраивать...

Странно.
У меня User Data старая, ещё со 132 движка так и работает до последней версии, подхватывает без проблем. Я на всякий случай всегда делаю бекап, если что пойдёт не так, но до сих пор никаких проблем не возникало. Копирую в папку, где User Data новую папку с новой версией и новый exe - и всё запускается.

Всего записей: 181 | Зарегистр. 21-09-2023 | Отправлено: 00:22 01-10-2025 | Исправлено: Faenza, 00:26 01-10-2025
a_nester



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Faenza,
Так я смотрю по скрину у Вас Portable с StartupParm.txt родной! По этому всё и в порядке! А у меня Portable с version.dll + version.ini by nekto78 ! И заметил, что с таким методом портабелизации в Catsxp (именно в нём) частенько возникают проблемы...

Всего записей: 1047 | Зарегистр. 08-10-2016 | Отправлено: 07:26 01-10-2025
lz57005



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nekto78

Цитата:
Реализацию GetComputerNameW GetComputerNameA без подключения дополнительных модулей можно сделать так
Код функций
Это для 32-х битной версии, для 64-х битной вероятно нужно подправить.

x32 под рукой нет, а в x64 проблема с размером буфера или длиной строки
при  
COMPNAME=12345678
   
   
при это в списке browser://devices-tabs/ в ЯБ устройства вообще не видно
это без var lpBuffer, c var браузер не стартует, насколько я помню с моими немногочисленными экспериментами с Delphi Detours в Lazarus это немного не так работает, в большинстве случаев со строкой я использовал именно StrLCopy и в каких-то редких случаях CoTaskMemAlloc и Result := @WideStrings[1]; (но не помню работал ли второй вариант, StrLCopy точно работает) поэтому нужно вытягивать весь код StrLCopy  из SysUtils
Добавлено:
да, проверил:

Код:
 
function StrLCopyW(Dest: PWideChar; const Source: PWideChar; MaxLen: Cardinal): PWideChar;
var
  Len: Cardinal;
begin
  Result := Dest;
  Len := Length(Source);
  if Len > MaxLen then
    Len := MaxLen;
  Move(Source^, Dest^, Len * SizeOf(WideChar));
  Dest[Len] := #0;
end;
 
function GetComputerNameW(lpBuffer: PWideChar; var nSize: DWORD): BOOL; stdcall;
var
NewNameLen,RequiredSize: DWORD;
WideName : Widestring;
begin
 WideName := Widestring(COMPNAME);
 if WideName='' then result := False else
  begin
  NewNameLen := Length(WideName);
  RequiredSize := NewNameLen + 1;
  if nSize < RequiredSize then
  begin
    nSize := RequiredSize;
    Result := False;
    Exit;
  end;
  StrLCopyW(lpBuffer, PwideChar(WideName), NewNameLen);
  nSize := NewNameLen;
  Result := True;
  end;
end;
 

вот так корректно.
 
Добавлено:
nekto78

Цитата:
Для проверки добавил перехват функций RegisterEventSourceW/A, ReportEventW/A с выводом сообщения при перехвате функций. Но выполнение перехваченных функций так и не произошло. Или из-за того, что не произошло нужное событие или, что скорее всего, из-за того, что модуль Advapi32.dll отсутствует в таблице статического импорта хрома и соответственно перехват всех функций из этого модуля работать не будет (в том числе функций чтения из реестра).

могу протестить на ЯБ, он стабильно при каждом запуске выдаёт  
Event: INFO:extension_garbage_collector.cc:184 Garbage collection for extensions on file thread is complete.

Всего записей: 76 | Зарегистр. 09-04-2012 | Отправлено: 11:16 02-10-2025 | Исправлено: lz57005, 14:00 02-10-2025
nekto78



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
Реализацию GetComputerNameW GetComputerNameA без подключения дополнительных модулей можно сделать так
Код функций
Это для 32-х битной версии, для 64-х битной вероятно нужно подправить.
 
x32 под рукой нет, а в x64 проблема с размером буфера или длиной строки
при  
COMPNAME=12345678

 
Вот, вспомнил, там размер строки полученный из WideName нужно умножить на 2, тогда нормально должно получиться с первым вариантом (дело в том что функция Length определяет число символов в строке, но не знает что каждый wide символ занимает 2 байта)
т.е. без использования вспомогательной функции можно попробовать так
NewNameLen := Length(WideName) * 2;  
или лучше так (переместить часть вашего решения из вспомогательной функции в начальный вариант)
CopyMemory(lpBuffer, PWideChar(WideName), NewNameLen * SizeOf(WideChar));
поскольку если посмотреть исходный код функции CopyMemory она выполнена на основе той же Move

Всего записей: 673 | Зарегистр. 10-02-2006 | Отправлено: 20:38 02-10-2025 | Исправлено: nekto78, 09:48 03-10-2025
lz57005



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nekto78

Цитата:
CopyMemory(lpBuffer, PWideChar(WideName), NewNameLen * SizeOf(WideChar));

для корректности нужно ноль на конце добавлять, потому что в winapi используются указатели на Null-terminated string, Dest[Len] := #0; т.е. StrLCopyW из моего примера максимально корректно к тому что реально получает в ответ процесс,  по сути StrLCopy это и есть доработанный для особенностей винды CopyMemory, который является обёрткой Move. Некоторые программисты вместо корректного получения длины буфера  
  nsize:=0;
  GetComputerNameW(nil,nsize);
  GetComputerNameW(@bufW,nsize);  
заряжают максимальную и не парятся,
  nsize:=4096;
  GetComputerNameW(@bufW,nsize);  
в этом случа без нуля в конце указателя на строку, в буфер упадёт кроме имени компа, рандомная инфа из памяти.

Всего записей: 76 | Зарегистр. 09-04-2012 | Отправлено: 09:42 03-10-2025 | Исправлено: lz57005, 09:45 03-10-2025
nekto78



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
в этом случа без нуля в конце указателя на строку, в буфер упадёт кроме имени компа, рандомная инфа из памяти.

Да, точно (почитал про строки и указатели). Ваш вариант точно работает как надо. И реализацию функции StrLCopyW можно вынести в модуль Utils.pas.

Всего записей: 673 | Зарегистр. 10-02-2006 | Отправлено: 09:54 03-10-2025 | Исправлено: nekto78, 10:10 03-10-2025
Petrovic82

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chrome++ от Bush2021 1.13.2
https://github.com/Bush2021/chrome_plus/releases/tag/1.13.2

Всего записей: 8310 | Зарегистр. 19-10-2013 | Отправлено: 15:59 03-10-2025
El Sanchez



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lz57005, nekto78, какой тип у COMPNAME для A и W функций? Почему WideString, а не string? Почему нет проверки nSize на необходимость иметь размер буфера не менее MAX_COMPUTERNAME_LENGTH символов, не включая завершающий null-символ, как это указано в документации? Почему WideName='' для функции ошибка? Почему при nSize < RequiredSize вы не выставляете LastError в ERROR_BUFFER_OVERFLOW, как это указано в документации? Зачем вы вообще перехватываете GetComputerName?

Всего записей: 517 | Зарегистр. 23-12-2008 | Отправлено: 20:02 03-10-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

Компьютерный форум Ru.Board » Компьютеры » Программы » Version.dll / Chrome++ для Chrome и иных Chromium браузеров


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru