Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > Запуск одинаковых EXE


Автор: NetFlame 18.9.2007, 11:37
Привет всем!
Такая проблема.

Есть игра - С&C:Renegade

Её главный исполняемый файл - Game.EXE
Игра также поддерживает мультиплеер.
Если ты запускаешь игру, перед тобой возникает меню для выбора - простая игра (single), или Internet-игра, где ты можешь либо создать игру (Host) и выступить в роли сервера, либо вступить в уже созданную кем-то игру.
Люди сделали на основе Game.EXE сервер, урезали его, выбросили из него всё лишнее, который только раз кликнув на него, сразу же создает игру ( Host ), минуя всю графику игры ( он вообще открывается в окне dos ).


Когда запущен сервер, запуск полноценной игры невозможен, так как игра видит уже запущенную ее копию ( то есть этот урезанный ехе - сервер ), и далее не открывается.

Вопрос в том, что надо сделать, чтобы появилась возможность одновременного запуска двух приложений ( сервера и самой игры ) на одном ПК?
Необходимость появилась, из-за того, что в самой неурезанной игре, сеансы не создаются - нету в списке серверов созданной игры )... А к серверу уже вышли патчи...

Help!  smile 

Автор: Imple 18.9.2007, 11:53
Тут дело абсолютно не в названии запускаемого файла. Игра ищет в памяти/списке процессов/и т.д. свое присутствие, и в случае чего отказывается запускаться.

Автор: redona 18.9.2007, 12:26
NetFlame, проблемма со вторым запуском игры, думаю не устранима...

Автор: NetFlame 18.9.2007, 14:25
ну а может как-нибудь можно запустить этот ехе внутри какого-нить приложения?

Автор: dumb 18.9.2007, 14:49
Цитата(NetFlame @  18.9.2007,  15:25 Найти цитируемый пост)
можно запустить этот ехе внутри какого-нить приложения?
дык. vmware/virtual pc/etc

Цитата(redona @  18.9.2007,  13:26 Найти цитируемый пост)
проблемма со вторым запуском игры, думаю не устранима...
устранить-то скорее всего можно, но вовсе не факт, что все это потом будет нормально работать... smile

Автор: 586 18.9.2007, 17:54
Я бы поискал в IDA функцию CreateMutex а потом в HEX редакторе подправил EXE-шник.

Автор: Imple 18.9.2007, 18:57
Цитата(586 @  18.9.2007,  17:54 Найти цитируемый пост)
Я бы поискал в IDA функцию CreateMutex а потом в HEX редакторе подправил EXE-шник.


ИМХО это один из очень многих способов отслеживания второго запуска... стоит ли тратить время на поиск и отключение всех вариантов?  smile 

Автор: Dimannn 18.9.2007, 21:20
Цитата(NetFlame @  18.9.2007,  11:37 Найти цитируемый пост)
Люди сделали на основе Game.EXE сервер, урезали его, выбросили из него всё лишнее,

Так можт они и проверку заодно уберут?
Отследить можно, но нужна сама игра и знание основ крэкинга.

Автор: NetFlame 20.9.2007, 21:48
Люди! Кто может подправить этот exe? В долгу не останусь  smile 

Автор: Smaug 20.9.2007, 22:02
Цитата

Необходимость появилась, из-за того, что в самой неурезанной игре, сеансы не создаются - нету в списке серверов созданной игры


не понял?
из самой игры нельзя к другим сервакам подрубиться? я правильно понял?

просто по моему будет легче и проще сформулировать проблему поискать другой способ решения.

Автор: 586 21.9.2007, 19:40
попробуй

Автор: dumb 22.9.2007, 03:32
586, не, править надо game.exe - первый попавшийся в WinMain jnz на jmp. smile

Автор: NetFlame 22.9.2007, 13:50
Цитата(586 @ 21.9.2007,  19:40)
попробуй

Неа, видит всё равно  smile

Добавлено через 8 минут и 4 секунды
Smaug, цель - создать сервер для игры. Сейчас для того, чтобы подрубиться, нужно запустить приложение (gamespy), похожее на steam, оно выдает список серверов, далее кликаешь по одному из них, и приложение дает команду игре автоматически присоединяться к игре, ничего в самой игре для соединения с конкретным сервером не делая. Мне нужно создать сервер, чтобы потом на нем иметь возможность играть.
Сама игра, если ее запускать не через gamespy, не создает сервер, так как не имеет необходимых обновлений ( так как на такую "полную" версию игры их нету ), но обновления ( или fix`ы ) вышли для урезанного ехе. Если запускать этот урезанный ехе ( чтобы создать сервер ), в саму игру ( нормальную ) ты не войдешь, так как она, видя, что она уже запущена ( но запущена не она, а модифицированная она под сервер ), игра не запускается.

Автор: Dimannn 22.9.2007, 21:00
Цитата(dumb @  22.9.2007,  03:32 Найти цитируемый пост)
 не, править надо game.exe - первый попавшийся в WinMain jnz на jmp. 


Да, похоже файл из аттача не проверяет, запущена ли его копия. Нужно искать в другом.

Автор: dumb 23.9.2007, 00:42
Цитата(Dimannn @  22.9.2007,  22:00 Найти цитируемый пост)
похоже файл из аттача не проверяет, запущена ли его копия.
файл из аттача - это launcher("запускалка"), свой-то повторный запуск она отслеживает, но это не то, что нужно. нужно убрать проверку из того, что она запускает - Game.exe.

Автор: Dimannn 24.9.2007, 13:37
Цитата(dumb @  23.9.2007,  00:42 Найти цитируемый пост)
свой-то повторный запуск она отслеживает

Не отслеживаетsmile, ИМХО

Автор: dumb 24.9.2007, 17:20
Цитата(Dimannn @  24.9.2007,  14:37 Найти цитируемый пост)
Не отслеживает
может и нет - самой игры нет, а глазами смотреть долго неохота. есть там одно место с созданием мьютекса, но может это и не повторный запуск отслеживается...

NetFlame, ты бы выложил свой Game.exe - вопрос бы уже давно решился...

Автор: NetFlame 25.9.2007, 10:43
Цитата

NetFlame, ты бы выложил свой Game.exe - вопрос бы уже давно решился...


http://ifolder.ru/3477568

Автор: dumb 25.9.2007, 11:38
хех... пакованный.

тьфу, твою налево... smile NetFlame, опция командной строки есть для этого: /multi

Код

.text:0046F994 @@check_multi_opt:                      
.text:0046F994                 push    offset aMulti   ; "MULTI"
.text:0046F999                 push    esi             ; char *
.text:0046F99A                 call    _strstr
.text:0046F99F                 add     esp, 8
.text:0046F9A2                 test    eax, eax
.text:0046F9A4                 jz      short @@check_regmod_opt
.text:0046F9A6                 push    ebx             ; Enabled
.text:0046F9A7                 call    set_multi_flag  ; set "multiple instances flag"
.text:0046F9AC                 add     esp, 4
.text:0046F9AF                 jmp     @@continue
...
.text:0043CEA0 check_mutex     proc near               ; CODE XREF: WinMain(x,x,x,x)
...
.text:0043CEB5                 call    ebp ; CreateMutexA
.text:0043CEB7                 mov     [esi], eax
.text:0043CEB9                 call    ds:GetLastError
.text:0043CEBF                 cmp     eax, ERROR_ALREADY_EXISTS
.text:0043CEC4                 jnz     short @@mutex_ok
.text:0043CEC6                 cmp     bMulti, bl
.text:0043CECC                 jz      short @@dup_instance
.text:0043CECE                 pop     esi
.text:0043CECF                 pop     ebp
.text:0043CED0                 mov     al, 1 ; ok
.text:0043CED2                 pop     ebx
.text:0043CED3                 retn

Автор: NetFlame 25.9.2007, 12:24
dumb, скажи, какую прогу ты использовал и что мне теперь нужно делать???

Автор: dumb 25.9.2007, 12:30
запустить Game.exe с параметром /multi
Код

C:\...\CCRenegade\>Game.exe /multi

либо в свойствах ярлыка игры(Game.exe) добавить к строке "Объект" строчку /multi

Автор: NetFlame 25.9.2007, 12:46
Ok, попробую

Добавлено через 2 минуты и 34 секунды
Какая проблема. Так как запускаю этот исполняемый файл не я, а программа, то добавить /multi я к объекту не могу...

Автор: dumb 25.9.2007, 14:23
Цитата(NetFlame @  25.9.2007,  13:46 Найти цитируемый пост)
Так как запускаю этот исполняемый файл не я, а программа, то добавить /multi я к объекту не могу...
у тебя задача какая? - запустить сервер и игру одновременно. в чем проблема? - сервер запускается через launcher(без параметра, хотя есть подозрение, что где-нибудь параметр этот прописать можно), но игру то ты сам запускаешь. вот и запускай ее с ключем.

Автор: NetFlame 25.9.2007, 20:51
Цитата

но игру то ты сам запускаешь


Не сам, а gamespy, на этот ехе даже не кликаю, клтакаю на сервер в программе gamespy и автоматически запускается игра

Автор: dumb 25.9.2007, 22:07
http://ifolder.ru/3487198 smile

Автор: NetFlame 27.9.2007, 13:08
dumb, работает  smile 

Напиши в пм, может смогу что-нить предложить  за оказанную услугу smile 

Автор: dumb 27.9.2007, 15:14
Цитата(NetFlame @  27.9.2007,  14:08 Найти цитируемый пост)
Напиши в пм, может смогу что-нить предложить  за оказанную услугу
думаю, что "спасибы" будет вполне достаточно. smile

или я просто не знаю, от чего отказываюсь? - твоя фамилия не Корейко случаем? smile

Автор: NetFlame 4.10.2007, 20:45
Спасиба  smile 

+

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)