|
|
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
White Owl, зачем же так... меня тоже зацепило, но не напрягло ведь... ну, быстро отвечал человек а так: авторесли решаешь задачу, не завязанную на конкретные технологии, которые плохо поддерживаются хаскелем... то хаскель - хороший выбор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2012, 23:59 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
AndreTMWhite Owl, зачем же так... меня тоже зацепило, но не напрягло ведь... ну, быстро отвечал человек а так: авторесли решаешь задачу, не завязанную на конкретные технологии, которые плохо поддерживаются хаскелем... то хаскель - хороший выбор нет. тут ты не прав. не хаскелем, а библиотеками. язык - удобен для любой задачи. но если либа кривая, то не лучше ли взять более плохой язык, но с более хорошей либой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 00:01 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNWhite Owlпропущено... Мне нравится эта фраза. это правда. большинство либ на хакадже - сырые. кто-то пишет для своего проекта - и выкладывает. и больше никто не тестирует и не допиливает ( вернее я немного не правильно выбрал акцент на глчности. не либы в основном не глючные, но есть фатальный недостаток: "нет документации" если для дотнета или жавы я что-угодно нагуглю за 5 мин, то в хаскеле придется изучать исходники либы и экспериментировать, придется обращаться на слешдот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 00:07 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
Хм... Опять недопонимание моего вопроса или я не так выражаю свои мысли. Почему-то заместо реальной помощи, меня упрекают в попытке взломать многопользовательские сервера игр или тому подобное. Как уже было сказано ранее я не занимаюсь взломом или жульничеством в сетевых, многопользовательских играх. Меня интересует сама возможность взаимодействия с ними, то есть в данном случаи, я просто хотел спросить как написать такую программу, которая будет определять изменения жизней и как ни будь реагировать на это. Если говоря еще проще, то играю я в "Unreal Tournament" или "Star Wars BattleFront", получаю урон, в последствии чего отнимается энное количество игровых жизней, а моя программа определяет это событие и дает мне знать об этом. Если тема совсем гиблая, то в таком случаи обращаюсь к модераторам данного раздела закрыть ее или подскажите хотя бы где мне смогут помочь в моей проблеме? Проведя небольшое время в самостоятельных работ за отладчиком и ArtMoney, я вроде бы нашел то самое значение которое отвечает за игровые жизни. Теперь как бы мне это в своей программе определить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 00:43 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
Ну долго еще объяснять-то? Сетевые игры (даже если клиент у вас на локальной машине установлен) - не реагируют на любые ваши локальные изменения... Анализируйте трафик... Charles изучите, хотя бы, раз начинающий в этом вопросе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 01:04 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNmaytonбеда в том что задач нету пот этот специфичный язык. заблуждение. если не учитывать "недоделанность" хаскельных библиотек, то это язык общего назначения. если решаешь задачу не завязанную на конкретные технологии, которые плохо поддерживаются хаскелем, то хаскель хороший выбор. Я неверно выразился. У меня лично нет пока задач. А так вобщем-то cool ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 01:39 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
alekseiryzhakov26Проведя небольшое время в самостоятельных работ за отладчиком и ArtMoney, я вроде бы нашел то самое значение которое отвечает за игровые жизни. Теперь как бы мне это в своей программе определить? Или ты слишком мало провёл времени за отладчиком или не понимаешь своей-же постановки. Что ты хочешь сделать за "свою программу" ? Какой функционал в ней должен быть? Не спеши с ответом. Подумай. Правильная постановка это на 50% решённая задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 01:43 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
Это уже становится страшно интересно, то есть меня пугает данная ситуация. Опять не понимание. Повторюсь что не кто кроме вас и других ответивших не говорил о перехвате событий посланных с сервера. Хотя в чем-то вы и правы, меня и интересует полученная информация. Возьмем к примеру, "Unreal Tournament", в одиночном режиме или в сетевом на экране отображается информация касательно количеству жизней у моего персонажа. Вот эта информация меня и интересует, то есть если на экране интерфейса показано 100 жизней, программа простаивает. Но если отнимется энное количество жизней, то в таком случаи программа это запишет в свое окно. Ну, как бы оно не было мне удалось с помощью, "ArtMoney" найти значение отвечающее за игровые жизни. Подскажите мне хотя бы как мне теперь отловить и среагировать на это событие в своей программе? Буду очень благодарен! По сути тема не такая уж и сложная, но результаты ее выполнения меня пугают, все же меньше чем то что меня не как не кто не может понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 01:55 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
Экий ты настырный читер. Давай так. Ты напиши софт. И приходи с исходником. Обсудим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 02:04 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
alekseiryzhakov26, уже посоветовали - учи албанскейХацкель. а то ZyK_BotaN (без 5 мин. модератор) тебе банца выпишет, и усё, "не поминайте лихом" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 03:04 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
alekseiryzhakov26... просто я интересуюсь программированием для сетевых шутеров. И ищу различные способы взаимодействия с ними.Тогда, наверное, надо начать с изучения C, C++, потом алгоритмы компюьтерной графики - линии, плоскоси, полигоны в пространстве, потом написать свой маленький движок для игры, ну и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 11:35 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
И снова здравствуйте! Потихоньку продвигаясь в данной области удалось набросать несложный программный код, тот же как раз и делает что мне нужно. Почти... Но, поясню все детальнее. Я взял для эксперимента компьютерную игру, "Unreal Tournament 2004". Пропустив ее через, "ArtMoney" я нашел якобы нужное мне значение и его адрес, то что отвечает за счетчик жизней в игре. Извлекаю адрес самого значения, далее пишу простой код для поиска и прочтения этого значения в запущенной игре. Собственно вот предполагаемый адрес нежного значение: 05F7AC74, само же оно равно 4 Байтам. А вот и сам код который я использую для подключения к процессу и прочтению нужного мне значения: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Теперь о плохом, первое и самое неприятное это то, что как я понял при каждом новом запуске игры адрес значения меняется. По этому поиск нужного значение по его адресу сильно затрудняется. Второе, есть еще один неприятный момент, когда в игре наступает полная потеря жизней, то в данном значении за место 0 прописывается на половину случайное десятизначное число, на половину так как не меняется первый кусок числа, 42949672** крайнее две цифры как я понял разные время от времени. И еще после этого события значение так и остается равным этому десятизначному числу. Даже прочесывая игру через, "OllyDbg" результат неутешительный. Хм... Может быть я конечно что-то путаю, поправьте! Хотя сейчас у меня есть мысли что все же я нахожу не то что нужно. Значит есть еще один адрес и значение в памяти игры который отвечает за отображение информации касательно счетчика жизней. Все же как я уже начинаю понимать, довольна проблематично и сложно получить информацию касательно игровых жизней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 13:12 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
alekseiryzhakov26, почитай про защищенный режим. таненбаума например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 13:31 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNalekseiryzhakov26, почитай про защищенный режим. таненбаума например это я на счет изменения адреса. а по поводу "42949672**", тут ничего удивительного, просто старшие биты выставляются в 1(наверное 3 байта) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 13:42 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNZyK_BotaNalekseiryzhakov26, почитай про защищенный режим. таненбаума например это я на счет изменения адреса. а по поводу "42949672**", тут ничего удивительного, просто старшие биты выставляются в 1(наверное 3 байта) или, как вариант, делается отрицательным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 13:47 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
Так немного разобрался в сложности ситуации, то есть иными словами есть зацепки. Касательно смены адреса значения я разобрался, суть в следующем... Во первых, я обращал внимание не та тот адрес, искомая для меня информация хранилась сразу по трюм адресам, которые в свою очередь также при каждом новом запуске игры меняются. Для примера приведу один из них, вот: 05843D00. Тут все довольно просто, сам адрес состоит из восьми символов, из которых изменяются только четыре символа. Для простоты усвоения делим адрес на три части, 0 5843 D00. Первая часть состоит из одного символа, то есть всегда равна нулю. Вторая часть все время видоизменяется, то есть как уже было сказано при каждом новом запуске происходят изменение/замена символов, собственно это и есть полиморфный геморрой! Ну, а третья часть состоит из трем символов, которые подобной первой части некогда не меняются. Так вот отталкиваясь от этих проверенных предположений, можно в каком-то смысле облегчить себе задачу. То есть, как я понимаю надо сделать что-то вроде поиска в памяти запущенного процесса, где искать будем нужный адрес, отталкиваясь от штатных начальных и конечных символов. Но вот тут, то собственно и встает вопрос, касательно поиска. Ведь функции FindProcessMemory нет! А считывать весь регион виртуальной памяти очень проблематично и затратно касательно ресурсов самой системы, что и еще в последствии может привести к краху. Я вот тут настрочил небольшой код для проверки проверки, определения является ли тот или иной адрес искомым или нет. Сам код ниже. Но вот как искать в памяти в момент работы программы, вот тут я застрял. Проверка на валидность, на примеры работы с обычным текстом: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Вы описанный программный код работает безупречно, но чем его дополнить что бы можно было искать адреса в памяти. Хотя, не правильно сказал, как реализовать поиск в памяти запущенного процесса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 22:31 |
|
||
|
Как перехватить событие из компьютерной игры
|
|||
|---|---|---|---|
|
#18+
Все же как же считать значение если его адрес является динамическим? Поискав по просторам всемирной паутины я наткнулся на небольшую статью, в ней описывался метод написания тренера для компьютерной игры. Ознакомившись с данной документацией я решил попробовать этот метод... Скачал утилиту, TSearch нашел с ее помощью динамические адреса указывающие на счетчик жизней, как уже я говорил ранее их всего три. Так вот Делаю все как по инструкции, в верхнем меню TSearch я выбираем раздел Auto Hack - Enable debugger, далее выбираю AutoHack window, в открывшемся окне в верхнем меню выбираем Set Breack Point, где в поле Address вписываю один из найденных адресов, 0B47AE24, устанавливаю Read/Write, и жму на кнопке Set. Далее, возвращаемся в игру изменяем количество игровых жизней и сворачиваю игру, возвращаемся в окошко AutoHack window наблюдаю сделующее: автор10156AEC: mov ecx,[eax] 10126F43: mov [eax],ecx Собственно тут я и застрял, то есть если отталкиваться от указанной ниже статьи, в регистр eax функцией mov должно помещаться какое-то значение... Но у моем случаи я не чего не наблюдаю или я что-то не правильно делаю? В таком случаи поправьте. Ссылка на статью: http://www.gamenarod.ru/showthread.php?t=103 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 15:22 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1342369]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
193ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 522ms |

| 0 / 0 |
