Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Windows XP Program patcher
GAMEINATOR forums > Soft, Hard и периферия > Hard & Soft
Modera
XP Program Patcher


В последнее время всё чаще стали появляется программы, которые типа как не поддерживают windows xp. При запуске появляется сообщение "не является приложением win32". Конечно, это с лёгкостью исправляется любым редактором PE-заголовков, а если у вас прямые руки, то и HEX-ом. Но как показывает практика, далеко не все об этом знают. Поэтому я и решил создать эту программу.

Программа меняет в PE заголовке версию ОС и подсистемы.(хотя вообщето ОС не критично, но все же)
Фишка в том, что делает всё сама, и не требует абсолютно никаких познаний о строении PE заголовков.

ВСЁ ИСПОЛЬЗУЕТЕ НА СВОЙ СТРАХ И РИСК. ЕСЛИ У ВАС РАЗЛЕТИТСЯ КОМП И ВАМ ПРИДЁТСЯ ПИСАТЬ С КОШКИ Я НЕ НЕСУ НИКАКОЙ ОТВЕСТВЕННОСТИ.

Скачать (55 кб)

И да, не стесняйтесь распространять эту программу. Хрюшка вас не забудет!
Капитошка
Гуру, а закатать ехешник в архив вы не догадались? ph34r_1.gif
helter
меняет те байты что abramcummer в закромах родины дал?
laxalaxin
спс, забрал... на одном сайте через копипаст написал.. указал на ник...
Modera
Цитата(Капитошка @ 18.12.2014, 11:29) *
Гуру, а закатать ехешник в архив вы не догадались? ph34r_1.gif

Гм, а зачем это? Я так подумал, эту программу нет необходимости запаковывать в архив.
Цитата(helter @ 18.12.2014, 11:36) *
меняет те байты что abramcummer в закромах родины дал?

Именно их.
Капитошка
Цитата(Modera @ 18.12.2014, 16:17) *
Я так подумал, эту программу нет необходимости запаковывать в архив.

Браузеры ругаются на небезопасность содержимого
macron
Программка, кстати, не запускается. Требует эти bpl/dll:



MrObs
Ох ты ж ёш! Это же жуткий вирус! Ну ты Модера и кот!(шутка) biggrin.gif
Modera
macron, стандартные библиотеки от борланда же. Но на всякий случай выложу. https://yadi.sk/d/FymjsOKrdUDkB
macron
Цитата(Modera @ 18.12.2014, 23:07) *
стандартные библиотеки от борланда же

Для тех, кто занимается борландом, они может и стандартные. Но у меня, хоть я еще с 2006 твикал/собирал свои сборки XP с большинством необходимых дополнительных дллей, именно этих не оказалось. cool.gif

Зы: с дллями поперло. Лучше зазипь теперь всё вместе + инструкцию, как полноценный самодостаточный продукт.
Modera
Архив с dll-ками и инструкцией: https://yadi.sk/d/OXyCWwWddUN6g (1 195 КБ)
Просьба обновить ссылку в шапке.
Ricco95
неплохая темка, но руки у меня кривые. жаль...
Modera
У меня тут новая версия: https://yadi.sk/d/BsYxqrsGeyrpC

Изменения:
-добавлена проверка COFF magic
-исправлен один баг, программа теперь работает и на вин98
-убрана зависимость от библиотек борланда
-новая иконка

Но самая главная фишка это работа из контекстного меню проводника. Требует установки программы специальным батником.(install.cmd)
Больше не обязательно выбирать exe-шник в программе, достаточно нажать ПКМ на него в проводнике и выбрать Patch. Программа оповестит вас сообщением в зависимости от результата.
Если вы не хотите видеть сообщения, добавьте в параметры запуска программы в реестре ключ -nomsg перед -patch.
Делается это в разделе HKEY_CLASSES_ROOT\exefile\shell\winpp\command, если что.

Кстати, если кто по английский шарит посмотрите что там с текстами, а то я сам почти всё писал... mellow.gif
Gerolt
Modera, на гитхаб или битбакет, да с исходничками.
HikeR
Цитата(Gerolt @ 02.03.2015, 23:49) *
да с исходничками.

исходнички из любого букваря по C/C++, раздел "Основы ввода/вывода"??? типа таких?:
Код
    long offset = 16;
    unsigned char buf[] = {'\x11', '\x22', '\x33', '\x44'};

    FILE *file = fopen("filename", "r+b");
    fseek(file, offset, 0);
    fwrite(buf, 1, sizeof(buf), file);
    fclose(file);


я даже несколько удивлен, что представленная программа не тянет за собой .Net Framework.
HikeR
Цитата(Modera @ 02.03.2015, 22:09) *
Требует установки программы специальным батником.

раз уж дело дошло до батников, то любителям странного должно понравиться (тем более что в XP команда debug еще осталась):
Код
@echo off
(
echo ecs:104 55
echo w
echo q
) | debug %1


104 — абсолютное смещение + 0x100
55 — байтик для замены
Modera
Цитата
debug

о, а вот это круто, не знал.
Надо только разобраться, как там найти PE заголовок, и как потом записать рабочую программу с MZ, а не только то что после него :\

кстати в xp x64 edition уже нет этого отладчика.
helter
Записки некрофила или запуск приложения скомпилированого под Win 7 под XP
Для примера возьмем DDS Converter http://www.nexusmods.com/fallout4/download/24149
Приложение выдает ошибку что не является win32
решение - Патчим экзе
Первая зависимость d3d11.dll вариантов ее затычки несколько
Это и известный Directx 10 от KMS-Software и http://rutracker.org/forum/viewtopic.php?t=2967231
я взял WineD3D for Windows это враппер dx в opengl
http://adolfintel.com/basic.php?p=wined3d/index.frag
архив старых версий http://www.mediafire.com/download/51ua9rc3...eD3D+Patches.7z
http://www.theisozone.com/downloads/pc/pat...-windows-v1751/
Ошибка - GetFileInformationByHandleEx не найдена в библиотеке DLL KERNEL32.dll
описание http://hex.pp.ua/fileextd.php
решение - с форума UFO две дллки http://sara.wingdreams.net/Zernel32-DLL.zip а в ехешнике игры ссылки на kernel32.dll меняются на zernel32.dll любым PE редактором, исходники из здесь: http://sara.wingdreams.net/Zernel32-Proj.zip
http://www.ex.ua/17420637
Ошибка - GetTickCount64 не найдена в библиотеке DLL KERNEL32.dll
решение - в CFF Explorer удаляем 64 в имени функции
решение - более качественный zernel32 http://www.ex.ua/view/17459948
Итог - filed init D3D device. Учитывая запуск на встроеной intel это тоже результат
Молния в вакууме
Цитата(helter @ 11.02.2016, 19:23) *
Итог - filed init D3D device. Учитывая запуск на встроеной intel это тоже результат

Это не результат.
Никакого действительно рабочего Direct3D10 и тем более 11 для XP нет.
С WineD3D не запускаются даже самые простые приложения, а первый это вообще фейк. Просто DLL-ки от висты, которые при загрузке возвращают ошибку. Хотя кое-что полезное там есть, это вспомогательная библиотека d3dx10, которая, впрочем и так работает и распространяется с новыми версиями DirectX9.
helter
Цитата(saas @ 29.02.2016, 20:35) *
Цитата(helter @ 11.02.2016, 19:23) *
Итог - filed init D3D device. Учитывая запуск на встроеной intel это тоже результат

Это не результат.
Никакого действительно рабочего Direct3D10 и тем более 11 для XP нет.
С WineD3D не запускаются даже самые простые приложения, а первый это вообще фейк. Просто DLL-ки от висты, которые при загрузке возвращают ошибку. Хотя кое-что полезное там есть, это вспомогательная библиотека d3dx10, которая, впрочем и так работает и распространяется с новыми версиями DirectX9.

Целью было обойти зависимость обновленных dll. Directx затычки лишь одна из частей. Решение ошибки функций kernel32 и msvcrt пригодится
helter
Продолжаем. Отсутствующие функции _wfopen_s() в msvcrt.dll xp
Решение - пропатчить _wfopen_s() на _wfopen(), которая под XP имеется
Молния в вакууме
helter, ты уверен? Эти функции отличаются по параметрам.

https://msdn.microsoft.com/en-us/library/z5hh6ee9.aspx
https://msdn.microsoft.com/en-us/library/yeby3zcb.aspx

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

Тут надо прокси-dll для msvcrt делать(типа как zernel, который ты тут скидывал.) и там обёртку на функцией.

Код
errno_t _wfopen_s(FILE **pFile, const wchar_t *filename, const wchar_t *mode)
{
    if(!pFile || !filename || !mode)
        return EINVAL;

    if(*pFile = _wfopen(filename,mode) == 0)
        return ENOENT;

    return 0; // success
}
helter
Не проверял, друг столкнулся вчера в ffmpeg , на руборде пишут помогло
Я вобще функции выпиливаю и работает
helter
патчер системных длл от япошек. Теперь приложения думают что это семерка
http://game-edition.ru/obsuzhdenie-sborok/...t-blackwingcat/
Svyatpro
Цитата(helter @ 20.06.2016, 13:15) *
патчер системных длл от япошек. Теперь приложения думают что это семерка
http://game-edition.ru/obsuzhdenie-sborok/...t-blackwingcat/

Ну не япошек, а BlackWingCat'a - гуру ассемблера, он из Японии, нужно уважать человека.

Кто там хотел DDS Converter запустить на ХР? У меня на 2003 пошел, кстати WineD3D 10/11 для XP реальность.






У меня еще есть куда более продвинутый zernel32.dll, правда это все хренотень на самом деле, куда лучше встроить новые функции экспорта в родной kernel32, с чем я и BWC боремся сейчас (под Win2003).
helter
Цитата(Svyatpro @ 20.08.2016, 04:47) *
У меня еще есть куда более продвинутый zernel32.dll, правда это все хренотень на самом деле, куда лучше встроить новые функции экспорта в родной kernel32, с чем я и BWC боремся сейчас (под Win2003).

А функция getthreadid у вас работает? Находил zernel32 с ней но Chrome так и не запустился. Где кстати BWC обитает кроме MSFN форума ?
Vik Winchester
QUOTE (helter @ 11.02.2016, 18:15) *
Приложение выдает ошибку что не является win32

Ошибка - GetTickCount64 не найдена в библиотеке DLL KERNEL32.dll


Как раз столкнулся с такими проблемами на Windows XP Professional x64, какое из решений подойдет?
Svyatpro
Цитата(helter @ 20.08.2016, 13:44) *
Цитата(Svyatpro @ 20.08.2016, 04:47) *
У меня еще есть куда более продвинутый zernel32.dll, правда это все хренотень на самом деле, куда лучше встроить новые функции экспорта в родной kernel32, с чем я и BWC боремся сейчас (под Win2003).

А функция getthreadid у вас работает? Находил zernel32 с ней но Chrome так и не запустился. Где кстати BWC обитает кроме MSFN форума ?


GetThreadId работает т.к. в Win2003 она имплементирована нативно. Chrome 50 без проблем бегает в моем Win2003 окружении и с полным, "почти" валидным аппаратным акселем.

BWС очень закрытый человек, можете писать сообщения у него в блоге, а личные контактные данные не могу предоставить.

Цитата(Vik Winchester @ 20.08.2016, 15:47) *
Цитата(helter @ 11.02.2016, 18:15) *
Приложение выдает ошибку что не является win32

Ошибка - GetTickCount64 не найдена в библиотеке DLL KERNEL32.dll


Как раз столкнулся с такими проблемами на Windows XP Professional x64, какое из решений подойдет?



Как вариант переименовать функцию импорта в GetTickCount. Либо имплементить ее в zernel32 и скомпилить для x64, сорсы есть.
RayTwitty
Цитата(helter @ 20.06.2016, 13:15) *
патчер системных длл от япошек. Теперь приложения думают что это семерка

Теперь на ХР может работать 3 и 4 рендер столкира? С намоканием и другими плюшками?
Svyatpro
Цитата(RayTwitty @ 20.08.2016, 18:42) *
Цитата(helter @ 20.06.2016, 13:15) *
патчер системных длл от япошек. Теперь приложения думают что это семерка

Теперь на ХР может работать 3 и 4 рендер столкира? С намоканием и другими плюшками?


Сталкер запускается как с третьим так и с четвертым рендерером но работает некорректно, многие форматы текстур не поддерживаеются до сих пор, а также многие шейдеры просто напросто не распознаются и в итоге не прорисовуются. Это вопрос времени, нужно ждать, отправлять качественные баг репорты в багзиллу winehq.


Примерно так выглядит менюшка сталкера чн на ХР при запуске под WineD3D10


Если кому интересно, можете потестить последний мой билд WineD3D специально адаптированный под XP/2003.
http://fracton.rgho.st/8k5QbmTW7
Молния в вакууме
Svyatpro, ты что, волшебник? biggrin.gif

Работает!

Скриншот сталкера на DX10:
Svyatpro
Цитата(saas @ 20.08.2016, 19:45) *
Svyatpro, ты что, волшебник? biggrin.gif

Работает!

Скриншот сталкера на DX10:


Для того чтобы привести его в нормальный вид, пишите баги в wine bugzilla, хорошо описывайте, пишите шаги воспроизведения, а также прилаживайте ссылки на загрузку приложений по которым пишите баг (только не пиратские ссылки). А также рекоммендую тестить под линуксом и предпочтительно приложения DX11.
Bidjo
А что насчет запуска например : bf3\4 , gta 5?
Svyatpro
Bidjo, рано очень, сейчас необходимо разобраться со всеми простыми приложениями которые в большинстве своем используют какой-то определенный аспект DX10/11, до интеграционного тестирования пока рано, но попробовать можно, в лучшем случае получите картинку с артефактами, в худшем не запустится вообще. Для таких игр как BF4, GTA5 потребуются также функции окружения NT6+, а также 64-битная среда. Здесь как минимум хотелось бы получить валидный DX10/11 API, чтобы запускалось и корректно работало все, что не привередливое к особенным фишкам NT6, тот же сталкер например.
Svyatpro
Путем совместных усилий вместе с BlackWingCat, удалось добавить новые функции экспорта в kernel32.dll win2003, путем перенаправления вызовов на библиотеки враппера. Перенаправление осуществляется непосредственного из нативного kernel32.dll. Это достаточно избыточное решение, но на данный момент другие решения слишком сложные. Данное нововведение обещает получить возможность запускать некоторые NT6-only приложения.

Svyatpro
На счет проги топикстартера, то я применил фикс kernel32.dll описанный BlackWingCat'ом в его блоге, теперь у меня запускаются все приложения с флагом Subsystem 0006 без ошибки " xxxx.exe не является приложением Win32"

Можете почитать о нем в его блоге:
http://blog.livedoor.jp/blackwingcat/archives/1298206.html
helter
Начал войну с Next Car Game Wreckfest
Getticketcount64 решилась патчем
GetConsoleScreenBufferInfoEx и SetConsoleScreenBufferInfoEx заменил SetConsolePalette
Билд 2015 заработал. свежий требует d3d11.dll
Svyatpro
Цитата(helter @ 23.09.2016, 18:26) *
Начал войну с Next Car Game Wreckfest
Getticketcount64 решилась патчем
GetConsoleScreenBufferInfoEx и SetConsoleScreenBufferInfoEx заменил SetConsolePalette
Билд 2015 заработал. свежий требует d3d11.dll

Ну все эти функции можно запихнуть в родной kernel32.dll от ХР, путем расширения таблицы экспорта и перенаправления функций на библиотеку враппера. А вот с полноценной поддержкой DirectX11 пока рано.

Я как делаю, я создаю еще одну секцию в библиотеке, например kernel32.dll, делаю ее размером больше чем требует родная таблица экспорта, переношу в новую секцию родную таблицу экспорта и добавляю нужные мне функции путем перенаправления на библиотеку враппера, например GetTickCount64.KERNEL32EX.GetTickCount64.

Но это только теория, там много подводных камней, так как просто создать секцию не повредив другие секции вряд ли получится, поэтому приходится переписывать другие секции вместе с моей новой секцией. Но тем не менее, кому интересно могу поделиться результатом своей работы, но именно под Win2003 SP2.
Молния в вакууме
Я думаю править системные библиотеки это не очень хорошая идея. Всё-таки враппер лучше, его можно сделать универсальным. Только надо найти способ подменять DLL-ки при запуске программы, чтобы вручную это не делать.
Asterix
Я думаю, что издеваться над трупом не лучшая идея totstalkir.gif
Svyatpro
Цитата(Ray @ 24.09.2016, 19:50) *
Я думаю, что издеваться над трупом не лучшая идея totstalkir.gif

А что если мелкофост не смогли сделать ОСь, которая во всех аспектах лучше либо хотя бы идентичная той же XP?

Где у мелкософт аппаратно-ускоренный GDI, аппаратно-ускоренный DirectSound, DirectDraw нормальный? Та даже многие приложения DX7, 8, 9, OGL на ХР работают куда шустрее чем на Vista и выше. А качество звука на Creative звуковых? На ХР звук на этих звуковых куда объемнее и приятнее, все по тому, что обрабатывается аппаратно c помощью DSP звуковой карты, а на Vista и выше - хрен. Я уже не говорю о потреблении ресурсов и кол-ве накладных расходов при выполнении той или иной операции, что очень актуально на слабых машинах.

Зачем что-то доказывать, если и так известно, что мелкософт не смогли полностью заменить ХР, свидетельством этому - ее сверх длительная жизнь и интерес со стороны пользователей. Если бы не умышленное "убийство" со стороны мелкософта и ее марионеток, то ХР до сих пор была бы в топе экосистемы Windows.

Цитата(saas @ 24.09.2016, 19:18) *
Я думаю править системные библиотеки это не очень хорошая идея. Всё-таки враппер лучше, его можно сделать универсальным. Только надо найти способ подменять DLL-ки при запуске программы, чтобы вручную это не делать.

Ну это что-то по типу Alky for Applications, но это сложно, накладно и все таки внедрять новые API в системные библиотеки проще для пользователей, так как множество приложений не позволяют вносить изменения и менять контрольную сумму в своих бинарниках.
Svyatpro
Последняя версия FileZilla на Win2003 SP2




При чем это не порт и не перекомпил, это скачал установщик, установил и запустил biggrin.gif
igi_vlad
Но ведь XP - 32битная (64битная версия - не очень, по мнению многих wink.gif или серверная(?) Win2003 SP2 - наш выбор ?!
helter
Свежая сборка ncore
https://vk.com/lwgame_ncore
helter
Pale moon 27 для XP
http://www.msfn.org/board/topic/177125-my-...le-moon-for-xp/
http://forum.ru-board.com/topic.cgi?forum=...p;start=3320#lt
Зачем оно надо если есть Firefox?
Жрет меньше памяти, html5 сразу, интерфейс старой мозиллы
macron
Цитата(helter @ 10.11.2017, 13:45) *
Зачем оно надо если есть Firefox?

Firefox после 52 версии XP не поддерживает.
helter
Искал патчер системы Blackwingcat's NNN Configure
нашел полезный сайт с мануалами запуска игр на XP патчинг функций, подмена dll

http://wp.xin.at/
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.