Вышла 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, исходные коды которого он предоставил во всеобщее пользование.

EDGE Patcher LOGO (C) "All rights reserved", 2024
EDGE Patcher LOGO (C) "All rights reserved", 2024

Теперь и Вы можете попробовать себя пиратом бесплатно и без СМС.

Второй нюанс

Сколько вообще было добавлено новых 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)


  1. WondeRu
    31.07.2024 11:31
    +3

    Поддержка windows 7 убирается не из-за желания нагадить, а чтобы не прогонять тестирование под устаревшую платформу. Это минус 10-20 FTE.


    1. Blaukovitch Автор
      31.07.2024 11:31

      Так они в один промежуток времени (49 версия) тестили целый зоопарк XP-10.

      С другой стороны, вон Microsoft вообще на пользователях сразу всё тестит - пошли бы уже дальше.


    1. vis_inet
      31.07.2024 11:31
      +1

      Вы считаете, что это критический объём работы для корпорации?


      1. WondeRu
        31.07.2024 11:31
        +2

        Да, считаю. Это минимум $1.5M в год. Прямых заработков у Google Chrome нет, а если и есть, то не от Windows 7.


        1. vis_inet
          31.07.2024 11:31

          Подскажите, откуда эта цифра?


          1. WondeRu
            31.07.2024 11:31
            +4

            Примерные затраты 200к в год на человека, учитывая зарплаты, отпуск, налоги, офис, страховки, оборудование и т.п. Итого $1.5-2М в год на 10 FTE (10 человек). Я уверен, что там команда больше, поэтому и затраты точно больше. Если речь заходит про корпораты, то у каждого отдела свой PnL, таким образом, миллиарды, которые гуглу приносит реклама, никак автоматом не добавляют персонал в команду Google Chrome.


  1. hurtavy
    31.07.2024 11:31

    Эх, ещё бы Вивальди так взломать...


    1. Grey83
      31.07.2024 11:31
      +4

      Сейчас выложен релиз от 25 июня версии 6.8.3381.44:
      https://github.com/Blaukovitch/GOOGLE_CHROME_Windows_7/releases/tag/vivaldi_upd


      1. hurtavy
        31.07.2024 11:31

        спасибо, что-то я его не заметил :) Кстати, sandbox там местами не работает. Например, на ютубе и странице создания акка на гитхабе


  1. BarakAdama
    31.07.2024 11:31
    +3

    Пожалуйста, не используйте хаб Habr, если статья не связана с самим сайтом.


    1. moderator
      31.07.2024 11:31

      @Blaukovitch пожалуйста, прислушайтесь к этой рекомендации и отредактируйте свою публикацию, удалив из нее нерелевантный хаб


      1. Blaukovitch Автор
        31.07.2024 11:31

        Поправил, спс.


  1. grey_rat
    31.07.2024 11:31

    Есть большое подозрение на то, что на мобилках хром 131 или чуть позже, будет последним для armv7 и Android 8 и 9. Сейчас идёт какое-то разделение кучи apk до 10 и с 10.
    На XP вроде должен скоро появиться "Суперфокс" от автора супермиума. Но он будет очень медленным на системах без видеокарты OpenGL 3. Для висты тоже выходят разные версии хромобраузеров.

    Вангую в следующем году завершение выпуска 32 битных хромов.

    Эта борьба будет только набирать обороты. Скоро они могут ввести ограничение на запуск браузера без DX11 или SSE4.1. Внедряя в скелет браузера технологии для современных видеокарт или процессоров - они отсеивают таким способом часть не слишком прошаренных программистов-энтузиастов.
    Сейчас выпиливают манифест v2 и старые расширения, потом ещё что-то придумают. Постепенно заставляя покупать новое железо.