0,0
рейтинг
18 января в 11:25

Администрирование → Патчим современное приложение для работы под Windows 2000 из песочницы

Если вы думаете, что Windows 2000 умерла, это далеко не так, она прекрасно трудится на старом железе, пусть без патчей безопасности, но в домашней интрасети это простительно. Устаревшая система на устаревшем Pentium-4 что может быть прекрасней? Да и ностальгические чувства зачастую требуют вернуться к старому интерфейсу, чтобы ощутить себя на полтора десятка лет моложе.

Конечно, OS/2 смотрелась бы еще лучше, но c ней большие проблемы с современным софтом. На Windows 2000 проблем тоже хватает. Например, утилита по восстановлению удаленных файлов отказалась работать. Выдает якобы, что исполняемый файл не является приложением Win32. На Windows 7 при этом работает прекрасно.



Чтож, посмотрим что случилось с PE-заголовком exe-файла. На первый взгляд ничего подозрительного. Но после детального анализа и сличения документации, выясняется, что слишком большие цифры в параметрах OS Version 5.01 и Subsystem Version 5.01 являются непреодолимым препятствием для запуска нашего файла под Windows 2000.



Исправим на OS Version 1.00 и Subsystem Version 3.10, контрольную сумму установим равную нулю, пропатчим файл.



После этого Windows 2000 начинает запускать файл, проблемы решены.

В заключение приведу побайтовое сравнение внесенных изменений:

Сравнение файлов repair1.exe и REPAIR2.EXE
00000138: 05 01
0000013A: 01 00
00000140: 05 03
00000142: 01 0A
00000150: F0 00
00000151: 38 00
00000152: 0D 00
Константин Рассказов @kostik450
карма
115,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (11)

  • 0
    Хм интересно, надо попробовать на другом софте.
  • +3
    Конкретные смещения бесполезны: смещение до PE заголовка может быть разным. Ну и нужно помнить об импортах, которых может тупо не быть на старой операционке.
    • 0
      Я бы вообще посоветовал в таком случае воспользоваться, к примеру — FileInsight, который позволяет определять свои структуры, и имеет парочку встроенных, например для PE-заголовков.

      Примерно так (см. поле MajorOperatingSystemVersion):
      Скриншот

      • 0
        У автора используется HIEW который прекрасно подходит для исправления заголовков.
        • 0
          Виноват, не пользовался HIEW, подумал что это просто Hex-редактор.
          • 0
            Который и есть HEX-редактор…
            • 0
              Ещё и дизассемблер и редактор PE заголовка.
              К тому же платный. Интересно, автор приобрел лицензию?
              • 0
                Для 32-битных приложений достаточно и демо версии
  • +3
    Не с каждой программой так получится. В Windows 7 немного другая структура взаимодействия DLL, или что-то в этом роде. Пробовал так перенести на XP игру в шахматы Chess Titans, не получилось.
  • +2
    Иной раз даже на XP нельзя перенести просто так, там могут использоваться функции WinAPI, которых нет в XP.
    Более того, иной раз даже с Win 8 в Win 7 нельзя.
  • +3
    Безусловно, метод пройдёт не с любым приложением — помню как Doom 3 официально не работал на Win98 из-за того, что API изменилось, и данные раньше отдавались в байтах, а начиная с XP — в мегабайтах (или наоборот), но фанаты его патчили. Но ведь есть и приложение, где авторы просто перестраховались и «на всякий случай» выставили минимальную версию довольно высокой. Таким программам эти махинации помогут, что безусловно классно :-)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.