Если вы думаете, что 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

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


  1. VBKesha
    18.01.2016 12:09

    Хм интересно, надо попробовать на другом софте.


  1. vilgeforce
    18.01.2016 12:14
    +3

    Конкретные смещения бесполезны: смещение до PE заголовка может быть разным. Ну и нужно помнить об импортах, которых может тупо не быть на старой операционке.


    1. iOrange
      18.01.2016 19:20

      Я бы вообще посоветовал в таком случае воспользоваться, к примеру — FileInsight, который позволяет определять свои структуры, и имеет парочку встроенных, например для PE-заголовков.

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

      Скриншот


      1. vilgeforce
        18.01.2016 19:21

        У автора используется HIEW который прекрасно подходит для исправления заголовков.


        1. iOrange
          18.01.2016 22:56

          Виноват, не пользовался HIEW, подумал что это просто Hex-редактор.


          1. vilgeforce
            18.01.2016 22:57

            Который и есть HEX-редактор…


            1. dMetrius
              19.01.2016 08:43

              Ещё и дизассемблер и редактор PE заголовка.
              К тому же платный. Интересно, автор приобрел лицензию?


              1. m0l0h
                21.01.2016 01:29

                Для 32-битных приложений достаточно и демо версии


  1. michael_vostrikov
    18.01.2016 12:19
    +3

    Не с каждой программой так получится. В Windows 7 немного другая структура взаимодействия DLL, или что-то в этом роде. Пробовал так перенести на XP игру в шахматы Chess Titans, не получилось.


  1. vladon
    18.01.2016 12:29
    +2

    Иной раз даже на XP нельзя перенести просто так, там могут использоваться функции WinAPI, которых нет в XP.
    Более того, иной раз даже с Win 8 в Win 7 нельзя.


  1. Newbilius
    18.01.2016 12:44
    +3

    Безусловно, метод пройдёт не с любым приложением — помню как Doom 3 официально не работал на Win98 из-за того, что API изменилось, и данные раньше отдавались в байтах, а начиная с XP — в мегабайтах (или наоборот), но фанаты его патчили. Но ведь есть и приложение, где авторы просто перестраховались и «на всякий случай» выставили минимальную версию довольно высокой. Таким программам эти махинации помогут, что безусловно классно :-)