Вышла 127 версия браузера Google Chrome.
Вы уже предвкушавшие, что статья будет посвящена обзору нововведений в популярном браузере? Вообще-то да, только в очередной раз делать это будем через отладчик x64dbg (или любой другой по вкусу, кроме gdb).
Chrome 127 whats is new
Ну убрал ты парочку апи, занопил другие - в следующем релизе придется
делать еще больше и так далее, и в его зависимостях, потому что теперь
разраб больше не ограничен необходимостью поддержки какой-то там 7-ки.Цитата отсюда
После первого выпуска статьи, абсолютное большинство скептически относилось к возможности навешивания пиратского флага на вновь выходящие современные итерации браузера Chrome. Тем не менее вышла 127 версия браузера ... а ситуация стала ровно противоположной приведённой выше цитате (о чём уже упоминалось во второй и третьей статьях). Этот обзор получился коротким, и, собственно, на этом немаловажном факте акцентирую внимание читателя.
Свежая версия не стала исключением в плане придумывания инженерами Google небольших палок в колёса паруса нашего пиратского лайнера:
155C9F00 | 55 | push ebp |
155C9F01 | 89E5 | mov ebp,esp |
...
155C9F15 | E8 867748FF | call <chrome.sub_14A516A0> |
155C9F1A | 83F8 0C | cmp eax,C |
155C9F1D | 8975 B4 | mov dword ptr ss:[ebp-4C],esi |
155C9F20 | 7F 2A | jg chrome.155C9F4C |
155C9F22 | E8 797748FF | call <chrome.sub_14A516A0> |
155C9F27 | 89C7 | mov edi,eax |
155C9F29 | 83C0 F9 | add eax,FFFFFFF9 |
155C9F2C | 83F8 06 | cmp eax,6 |
155C9F2F | 72 0B | jb chrome.155C9F3C |
155C9F31 | E8 9AE82CFC | call chrome.118987D0 |
155C9F36 | 31DB | xor ebx,ebx |
155C9F38 | 31FF | xor edi,edi |
155C9F3A | EB 6B | jmp chrome.155C9FA7 |
155C9F3C | 83C7 FA | add edi,FFFFFFFA |
... |
155C9F5A | 89F9 | mov ecx,edi |
155C9F5C | 68 01010000 | push 101 |
155C9F61 | 68 EAACEB19 | push chrome.19EBACEA | L"SOFTWARE\\Microsoft\\WindowsRuntime\\WellKnownContracts"
155C9F66 | 68 02000080 | push 80000002 |
155C9F6B | E8 A0C748FF | call chrome.14A56710 |
Переводя с ассемблерного — добавили аварийное завершение работы браузера, если версия Windows, не приведи Джек Воробей, меньше Version::WIN10_RS4 (кратко суть такова, что GetPreRS5UniversalApiContractVersion должна вернуть значение 0x10):
chromium/components/embedder_support/user_agent_utils.cc
static const base::NoDestructor<std::string> universal_api_contract_version(
[] {
int major_version = 0;
int minor_version = 0;
if (base::win::OSInfo::Kernel32Version() <=
base::win::Version::WIN10_RS4) {
major_version = GetPreRS5UniversalApiContractVersion();
} else {
base::win::RegKey version_key(
HKEY_LOCAL_MACHINE, kWindowsRuntimeWellKnownContractsRegKeyName,
KEY_QUERY_VALUE | KEY_WOW64_64KEY);
if (version_key.Valid()) {
DWORD universal_api_contract_version = 0;
...
На этом нововведения закончились. Новых API (в 127 версии) у меня для вас нет! ВСЁ! Статья практически окончена ... за исключением пары моментов.
Первый момент — упомянуть о предыдущих попытках, начиная со 125 версии ограничить фукнционал путём увеличения major/minor OS‑версии Image Optional‑заголовка PE COFF формата и блокировки оригинального репозитория (новый). Т.е. Google предпринимает незначительные попытки ввести запрет на пиратство собственного браузера в «семёрке». Да, вместо того, чтобы реально, например, полностью перевести рендер на DirectX 12, который только на «десятке» и выше. Впрочем, если WebGPU теперь имеет официальную поддержку DirectX 11 (привет, Windows 7) от того же Google/Microsoft, то предыдущее предложение пока больше из разряда фантастики. В какой-то мере задолбавшись к 127 версии смотреть на одно и тоже в отладчике, добрым человеком Q (QuQuRoon) был запилен Edge.Patcher, исходные коды которого он предоставил во всеобщее пользование.
Теперь и Вы можете попробовать себя пиратом бесплатно и без СМС.
Второй нюанс
Сколько вообще было добавлено новых WinAPI в браузер после прекращения поддержки Windows 7 (после первого релиза 114) посчитать на самом деле несложно.
Системная динамическая библиотека (System32 DLL) |
Кол-во новых WinAPI, поддерживаемых Windows 7 |
Эмулируемые WinAPI, присутствующие только в Windows 10 и 11 |
KERNEL32.DLL |
58 |
2 |
USER32.DLL |
44 |
2* |
MFPLAT.DLL |
0 |
1 |
bcryptprimitives.dll |
0 |
1 |
* присутствуют начиная с Windows 8
Как видно из таблицы — не пришлось заморачиваться с написанием нового фукнционала уже после релиза самой первой пиратской версии.
Ещё больше пиратских шхун
https://github.com/win32ss/supermium/
https://github.com/adeii/supermium-portable/
https://github.com/vxiiduu/VxKex (?)
https://www.mypal-browser.org/ (Windows XP)
К чему всё это было
Очевиден тот факт, что спустя 1,5 года от прекращения поддержки Windows 7 ничего принципиально не поменялось. Всё патчится, пиратится и ломается. Вопрос затраченных усилий стал стремиться к нулю, т.к. процесс теперь автоматизирован. Ожидать, что в рендер браузера будет добавлено что-то радикально привязанное к 10/11, а от остального legacy кода откажутся — точно не в ближайший год.
Самыми заметными нововведениями за всё это время стали только три вещи:
Скругленные углы в браузере
WebGPU
-
WebNN
И если для последней технологии требуется Windows 11, то WebGPU успешно пиратится на Windows 7. Ах, да — скругленные углы тоже работают
на Windows 7начиная с Windows XP.
Мне стало интересно другое: насколько медленно или вообще никак происходят процессы в гигантских корпорациях добра? Чисто технически, ничего не мешает до сих пор внедрить поддержку Windows 7 обратно (supermium тому пример. И делает это явно меньшее количество людей, чем в компании Google). Равно как и делать было подобное на протяжении 1,5 лет. Во всяком случае это точно гораздо полезней Manifest V3 и других сомнительных нововведений. Наверное, процесс отвязки от Windows 7 больше зависит от написания этих статей на Хабре (так поддержим же лайками и комментариями. Чем больше лайков и комментариев — тем меньше будет становится размер chrome.dll в следующей версии браузера). В остальном логика поведения инженеров Google вполне ясна (исправления безопасности в приоритете)..., но прошло уже 1,5 года (27 версий).
В моём понимании это должно было работать так. Инженер Google зарезервировал 1,5-2 месяца под одну таску (системный подход) — огромное review кода (выделили на это большую команду) и одним разом убрал код, который имеет отношение в Windows 7. В таком случае выпуск 110 (Windows 10 only) с инкрементом версий был бы целесообразным шагом. Что же вижу через окно отладчике? В самом начале (114) — да, часть действительно была убрана. Затем начались попытки искусственно вставлять палки в колёса путём от самих инженеров Google, которые описал выше. О чём это говорит? «Выводы делать только Вам».
В ближайшей перспективе нас ждёт выход Windows 12 и спустя три года (или около того) описываемая ситуация повторится, но уже с «десяткой». Однако занимает меня конечно же не это.
С огромной долей вероятности, Google очень хочет продвигать платную версию браузера Chrome в которой будет доступен новомодный ИИ (пока только Enterprise Premium за 6$) и отладчик уже придётся использовать по назначению, чтобы ломать Trial-версии браузера.
До новых встреч!
Комментарии (13)
hurtavy
31.07.2024 11:31Эх, ещё бы Вивальди так взломать...
Grey83
31.07.2024 11:31+4Сейчас выложен релиз от 25 июня версии 6.8.3381.44:
https://github.com/Blaukovitch/GOOGLE_CHROME_Windows_7/releases/tag/vivaldi_updhurtavy
31.07.2024 11:31спасибо, что-то я его не заметил :) Кстати, sandbox там местами не работает. Например, на ютубе и странице создания акка на гитхабе
BarakAdama
31.07.2024 11:31+3Пожалуйста, не используйте хаб Habr, если статья не связана с самим сайтом.
moderator
31.07.2024 11:31@Blaukovitch пожалуйста, прислушайтесь к этой рекомендации и отредактируйте свою публикацию, удалив из нее нерелевантный хаб
grey_rat
31.07.2024 11:31Есть большое подозрение на то, что на мобилках хром 131 или чуть позже, будет последним для armv7 и Android 8 и 9. Сейчас идёт какое-то разделение кучи apk до 10 и с 10.
На XP вроде должен скоро появиться "Суперфокс" от автора супермиума. Но он будет очень медленным на системах без видеокарты OpenGL 3. Для висты тоже выходят разные версии хромобраузеров.Вангую в следующем году завершение выпуска 32 битных хромов.
Эта борьба будет только набирать обороты. Скоро они могут ввести ограничение на запуск браузера без DX11 или SSE4.1. Внедряя в скелет браузера технологии для современных видеокарт или процессоров - они отсеивают таким способом часть не слишком прошаренных программистов-энтузиастов.
Сейчас выпиливают манифест v2 и старые расширения, потом ещё что-то придумают. Постепенно заставляя покупать новое железо.
WondeRu
Поддержка windows 7 убирается не из-за желания нагадить, а чтобы не прогонять тестирование под устаревшую платформу. Это минус 10-20 FTE.
Blaukovitch Автор
Так они в один промежуток времени (49 версия) тестили целый зоопарк XP-10.
С другой стороны, вон Microsoft вообще на пользователях сразу всё тестит - пошли бы уже дальше.
vis_inet
Вы считаете, что это критический объём работы для корпорации?
WondeRu
Да, считаю. Это минимум $1.5M в год. Прямых заработков у Google Chrome нет, а если и есть, то не от Windows 7.
vis_inet
Подскажите, откуда эта цифра?
WondeRu
Примерные затраты 200к в год на человека, учитывая зарплаты, отпуск, налоги, офис, страховки, оборудование и т.п. Итого $1.5-2М в год на 10 FTE (10 человек). Я уверен, что там команда больше, поэтому и затраты точно больше. Если речь заходит про корпораты, то у каждого отдела свой PnL, таким образом, миллиарды, которые гуглу приносит реклама, никак автоматом не добавляют персонал в команду Google Chrome.