Необxодимо поменять заголовок(caption) окна. Думал отвертеться пексплолером но ничего не получается ( http://slil.ru/23087628 - сам ехе(~77Kb). Собственно это ехе популярной онлайн рпг lineage и без остального добра из дистрибутива игры(распакованная игра ~5Гб) не запустится.
Открой L2.exe в любом редакторе рисурсов. Там выбери подпункт Resource\Dialog и меняй свое Upgrade Video Drivers на что хочешь.
upgrade video drivers ето левый диалог который появляется если дрова старые и с заголовком окна игры ничего обшего к сожалению не имеет
ds А програмно реализовать? Или так не подходит? Какая цель преследуеться? Или скажи хоть что в этом окне написано...
Можно написать патчик, который одноразово допишет в конец файла требуемую нам строку и поменяет ссылку на нее где надо. Проблема в том, что надо отдебагить исходное приложение и вкурить где у него ставится заголовок на окно. Но это изврат, имхо. Если нельзя вскрыть это дело Reshacker, тогда можно написать приложение, которое будет запускать препарируемый exe, ждать появление нужного окна, а затем менять его заголовок через посылку сообщения WM_SETTEXT а затем закрыватся. Вроде самый негеморройный вариант... И вообще такое можно в касание реализовать на программе InqSoft Sign of Misery, там особых программистских талантов не надо даже, а хелп подробный. Так что качай и разбирайся...
Спасибо за советы, но к сожалению написать приложение запускаюшие l2.exe и ждушие его загрузки не представляется возможным так как моя цель и есть обман подобного(l2dex.exe). Схема там примерно такая : запускается l2.exe, идет поиск окна с заголовком Lineade II (FindWindowA) потом память l2.exe патчится к сожалению совсем не понятным мне образом. У меня идея такая - пропатчить l2.exe(сменить заголовок окна к примеру на wasm.ru),пропатчить загрузчик так чтобы он искал окно с нужным мне заголовком(wasm.ru) и патчил его память.В таком случае не придется разбираться с тем как именно это чудо работает и станет возможно обойти ограничение на количество запускаемых на 1 компьютере клиентов lineage.
А ты уверен что вся загвоздка именно в заголовке? ТОесть получается что линейка проверяет загружена она уже именно найдя название окна la2?
ds Попробуй пооткрывать все длл лежащие рядом с ехе ресхакером. Я думаю что начать искать надо с windows.dll или какой-то такой длл.
да это точно надеюсь патчем Спасибо за совет, я был не прав полагая что l2dex патчит l2.exe т.к. сдампив l2.exe (воистину самое простое решение) ничего не добился Это вроде у Шекли - "Чтобы задать правильный вопрос надо знать половину ответа..." У меня в голове нету и 10% ответа ( То есть ситуация такая - есть loader который запускает l2.exe, ждет его загрузки и делает что-то без чего нельзя подключится к серверу. Как отмониторить что именно он делает если детальный разбор кода мне не под силу ?
Спасибо за совет у меня действительно появилась идея,а посему хочу задать еще 1 вопрос ) На компьютере допустим 2 пользователя (пусть будет А и Б). Я захожу используя учетную запись пользователя А, запускаю скажем winamp, после чего меняю пользователя на Б. Открываю диспетчер задач и не естественно не вижу в списке процессов winamp.exe хотя музыка при этом играет... Возможно ли осушествить такое(то есть запустить порограмму а потом скрыть ее область памяти) не меняя пользователей с конкретным .exe ?
Дело все в том же lineage. l2dex.exe налагает ограничение на количество клиентов игры запускаемых на 1 комьпютере. Обходится это через несколько пользователей и это как я понимаю потому что один конкретный пользователь не имеет полного доступа к памяти используемой другим пользователем(или я ошибаюсь ?).А как реализовать что-то подобное(сокрытие 1 процесса от другого) ? Нет необходимости прятать его от всего и вся - только от 1 программы.
ds Думаю что ни один нормальный человек не определяет запущено ли приложение, с помощью ф-ции FindWindow ("...тут рыбы нет..."). Обычно, это делается через создание именованных объектов синхронизации: семафоров, мьютексов и т.д. (потому как эти объекты создаются в системной области памяти и имеют уникальные хэндлы) Смотри CreateMutex(..), CreateSemaphore(..), CreateEvent(..) и т.д.
Блин, если это происходит через FindWindow то чем вам не понравился вариант с SetWindowText? Или вы не можете отловить запущенное окно Линейки?