Конечно, 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)
vilgeforce
18.01.2016 12:14+3Конкретные смещения бесполезны: смещение до PE заголовка может быть разным. Ну и нужно помнить об импортах, которых может тупо не быть на старой операционке.
iOrange
18.01.2016 19:20Я бы вообще посоветовал в таком случае воспользоваться, к примеру — FileInsight, который позволяет определять свои структуры, и имеет парочку встроенных, например для PE-заголовков.
Примерно так (см. поле MajorOperatingSystemVersion):
Скриншотvilgeforce
18.01.2016 19:21У автора используется HIEW который прекрасно подходит для исправления заголовков.
iOrange
18.01.2016 22:56Виноват, не пользовался HIEW, подумал что это просто Hex-редактор.
michael_vostrikov
18.01.2016 12:19+3Не с каждой программой так получится. В Windows 7 немного другая структура взаимодействия DLL, или что-то в этом роде. Пробовал так перенести на XP игру в шахматы Chess Titans, не получилось.
vladon
18.01.2016 12:29+2Иной раз даже на XP нельзя перенести просто так, там могут использоваться функции WinAPI, которых нет в XP.
Более того, иной раз даже с Win 8 в Win 7 нельзя.
Newbilius
18.01.2016 12:44+3Безусловно, метод пройдёт не с любым приложением — помню как Doom 3 официально не работал на Win98 из-за того, что API изменилось, и данные раньше отдавались в байтах, а начиная с XP — в мегабайтах (или наоборот), но фанаты его патчили. Но ведь есть и приложение, где авторы просто перестраховались и «на всякий случай» выставили минимальную версию довольно высокой. Таким программам эти махинации помогут, что безусловно классно :-)
VBKesha
Хм интересно, надо попробовать на другом софте.