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

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

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

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

0e159fba77c84fcf8103245b1fc63f23.png

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

b14ca1d9573242759e8f54095702c021.png

После этого 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

© Habrahabr.ru