![]() |
eXeL@B —› Вопросы новичков —› игра Gulf War не запускается под 2000/XP и выше |
Посл.ответ | Сообщение |
|
Создано: 13 февраля 2013 09:07 · Поправил: robot666 · Личное сообщение · #1 Пытаюсь понять, почему игра Gulf War - operation desert hammer не запускается под 2000/ХР и выше. Сама игра лежит на обменнике https://mega.co.nz/#!0VY1RDDR!XUa4dl8vYpC3TRB5mJB0kEs4hvZYfijum1qEDZSwelk Использую VirtualPC2007 + Windows98SE из вот этой сборки http://rutracker.org/forum/viewtopic.php?t=4291029 Игра запускается в софтвар режиме, под досбокс с эмулятором глайда валится с ошибками. Копаю файл \exec\Software_r.exe, сам по себе он не запускается, его вызывает hammer.exe на каталог выше. Под VirtualPC2007 и Windows98 функция kernel32.GetEnvironmentStrings возвращает в EAX ссылку на "TMP=c:\windows\temp" а под Win7 x32 возвращает EAX на строку ASCII "=::=::" ECX на строку ASCII "ir=C:\Windows" То есть явно кривой путь для временных переменных, это для начала. Почему то не найду описание функции kernel32 openprofileusermapping. Под Win7 почему-то вызывается CreateEventW 004E225C . FF15 28A14E00 CALL DWORD PTR DS:[<&KERNEL32.CreateEventW>] ; \CreateEventW а под Win98 в этом же месте olly пишет thunk to и функция WritePrivateProfileStringW или похоже на SwitchToThread я до конца не понял. часто используется thunk, под вин7 распознает код вообще не так )) ![]() |
|
Создано: 13 февраля 2013 10:08 · Поправил: OnLyOnE · Личное сообщение · #2 Обычно разные имена функций в импорте могут быть по причине того, что импортируются они приложением не по именам а по ординалу. Т.е. в разных системах одному и тому-же ординалу в одной и той-же библиотеке могут соответствовать разные АПИ. Могу только предположить, что на игре был ранее какой-то прот (пакер), ее распаковали и восстановили криво импорт. ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 13 февраля 2013 12:12 · Поправил: robot666 · Личное сообщение · #3 |
|
Создано: 13 февраля 2013 15:26 · Поправил: robot666 · Личное сообщение · #4 Пропатчил переход условный перед GetEnvironmentStrings. Игра запустилась. для SOFTWARE_R.exe Code:
![]() |
![]() |
eXeL@B —› Вопросы новичков —› игра Gulf War не запускается под 2000/XP и выше |