aliast Опубликовано 20 мая, 2010 Поделиться Опубликовано 20 мая, 2010 Так я и не взломал эту игру на предмет бессмертия от пуль..Что известно на данный момент (инфа актуальна для демоверсии Operation Flashpoint Resistance Demo):1) pID (указатель на нашего солдата) = [[[FlashpointResistanceDemo.exe+2E9A20]+7A4]+8]2) Повреждения частей тела: [[pID+17C]+n*4]при n=0 - голова, n=1 - туловище, n=2 - руки, n=3 - ноги3) Неработающий скрипт бессмертия:[ENABLE] aobscan(_faddress,d9xxxxebxxd9xxxxxxxxxxc2xxxxxx8bxxxxa1xxxxxxxx85xxxx8bxx74xxff) alloc(_newmem,2048) label(_returnhere) label(_originalcode)_newmem:// cmp edi,13788100 - этот фильтр недоделан// jne _originalcode mov [ecx+eax*4],0 fld dword ptr [ecx+eax*4] jmp flashpointresistancedemo.exe+1595b2_originalcode: fld dword ptr [ecx+eax*4] jmp flashpointresistancedemo.exe+1595b2 jmp _returnhere_faddress: // 005595A7 = FlashpointResistanceDemo.exe+1595A7 jmp _newmem_returnhere:[DISABLE] aobscan(_faddress,d9xxxxxxxxxxc2xxxxxx8bxxxxa1xxxxxxxx85xxxx8bxx74xxff)_faddress-5: fld dword ptr [ecx+eax*4] jmp flashpointresistancedemo.exe+1595b2 dealloc(_newmem)//Alt: db D9 04 81 EB 06Этот скрипт вроде как защищает от утопления в воде, но шальная пуля всё равно убивает. У меня пока только одна идея - в игре есть редактор миссий (в демке его нет), в этом редакторе есть скриптовая команда setdammage. Если бы придумать как вызвать эту команду во время игры, без редактора, можно было бы сделать бессмертие. Но как её выхвать я не понял(( либо искать причину гибели от пуль в другом месте Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 20 мая, 2010 Поделиться Опубликовано 20 мая, 2010 А что мешает через указатель на героя и указатель на структуру в любом куске кода, который выполняется постоянно сделать прыжок и ручками заполнять структуру повреждений нужными значениями? Тогда и фильтр не понадобится.Зы. Ой )) Сам себе репу поднял Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 21 мая, 2010 Автор Поделиться Опубликовано 21 мая, 2010 Да при чём тут фильтр? С фильтром проблем нет. Найденные адреса не дают бессмертия. Может пуля за раз отнимает все жизни, но это врядли. Скорее всего где-то есть либо ещё одна структура повреждений, либо флаг смерти какой-то. Почему приведённый скрипт защищает от воды, но не защищает от пуль? А главное - почему при включении спидхака скрипт и от воды перестаёт защищать? Обновлять значения не успевает чтоли.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 21 мая, 2010 Поделиться Опубликовано 21 мая, 2010 Хм. Игры под рукой нет, поэтому конкретнее пока ответить не могу. *ушел качать игру* Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 21 мая, 2010 Поделиться Опубликовано 21 мая, 2010 Может пуля за раз отнимает все жизни, но это врядли. Скорее всего где-то есть либо ещё одна структура повреждений, либо флаг смерти какой-то. Почему приведённый скрипт защищает от воды, но не защищает от пуль? А главное - почему при включении спидхака скрипт и от воды перестаёт защищать? Обновлять значения не успевает чтоли..Возможные причины не работающего бессметрия:1. Не найден адрес здоровья или найдены не все (что скорее всего).Проверить это можно, ставив бряк на запись на адреса здоровья своего героя и на адреса здоровья других игроков.2. Адрес (или адреса) здоровья может находиться в структуре1. С неё снимается копия в структуру2 и код который работает с этой структурой может повлиять на смерть героя.Больше вариантов у меня нет, если не тратить время чтобы придумывать их. Как написал Xipho необходимо смотреть в отладке. Хорошо бы найти несколько структур и постарать найти адреса-зацепки которые изменяются во время смерти некотрого игрока, но не своего...У меня пока только одна идея - в игре есть редактор миссий (в демке его нет), в этом редакторе есть скриптовая команда setdammage. Если бы придумать как вызвать эту команду во время игры, без редактора, можно было бы сделать бессмертие. Но как её вызвать я не понял(( либо искать причину гибели от пуль в другом местеЕсли setdammage работает в редакторе, то надо проследить в какую функцию идёт эта комманда. Попытаться найти её в самой игре. Я думаю, проще искать причину гибели от пуль.Это делать надо в Olly и брякнуться в момент оповещения о сметри героя. Именно брякнуться. Запомнить это место - Бряк1. Посмотреть стек вызовов и на каждом вызове поставить бряки. Перезапустить игру и играть если прерываемся и очевидной смерти нет, то снимаем бряки кроме 1. Если остался бряк1, то надо чё-то думать.И наконец когда смерть вновь произошла и сработал один из бряков, то плясать уже на этом уровне кода и смотреть что там происходит.... В общем не знаю как объяснить и предположить иное. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 15 января, 2011 Автор Поделиться Опубликовано 15 января, 2011 Итак, в игре имеется флаг смерти [pID+178h]. Поставил бряк на запись, занопил всё, что выскочило и получил искомое бессмертие с одной оговоркой - экран "Вы погибли" всё счастье портит)) хотя видно, что после этой надписи я стою на ногах, а не лежу замертво. Теперь осталось разобраться с перехваченными функциями и всё заработает Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 19 января, 2011 Автор Поделиться Опубликовано 19 января, 2011 Кому интересно вот таблица с бессмертием для всех (без фильтра) - http://narod.ru/disk/3888623001/flashpoint.rar.html (для оригинальной Холодной войны от Буки). Там две инструкции. В одной надо изменить сравнение cmp с нуля на единицу, и полностью занопить вызов функции call 004BEEDD. Пока так грубо.. надо ещё посидеть, бессмертие для всех это не круто.Адреса в таблице на бессмертие не влияют, но чтобы боец не орал от боли можно заморозить здоровье Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 21 февраля, 2011 Автор Поделиться Опубликовано 21 февраля, 2011 Создатель тренера для этой игры признаётся, что потратил на взлом игры 20 часов и преклоняется перед кодерами из Bohemia Interactive (http://www.ggmania.com/cheat.php3?cheat=5298). Видимо мне можно и не тратить время на попытки взлома игры)) хотя... ведь почти получилось - либо бессмертны все (нужен фильтр), либо только я пока не сяду в машину (фильтр найден некорректно, при посадке в машину начинает указывать на машину, а не на солдата). Вообще как вариант, кто хорошо владеет олей и IDA, можно дизассемблить тренер и посмотреть как там сделано) у меня на это знаний не хватает (ссылка на тренер выше) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 февраля, 2011 Поделиться Опубликовано 22 февраля, 2011 Paper Clip Trainer Spy позволит пошпионить за трейнером. Я думаю можно это сделать без угрызения совести, если ты откажешься от создания своего трейнера на основе того как работает трейнер автора. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 22 февраля, 2011 Автор Поделиться Опубликовано 22 февраля, 2011 Эти перехватчики я уже пробовал, не работают, скорее всего из-за моей Windows 7 x64. Но я уже выдрал код из тренера с помощью простых бряках на WriteProcessMemory, ничего сложного Я уже и статью склепал "Исследование работы чужих тренеров на примере игры Operation Flashpoint". Как думаете, можно выдранный код тут выложить, и статью?Там идёт инъекция в инструкцию выстрела. В самом коде бессмертия и что за инструкция выстрела такая пока не разобрался. Вставил код в автоассемблер CE, вроде работает теперь бессмертие можно и отключить, убрав галку в таблице CE, чего в оригинальном тренере сделать нельзя, только игру переоткрывать. Осталось разобраться в самой инъекции, что она делает... и попытаться её улучшить -добавить бессмертие для машины, союзников если получится, а самое главное добавить поддержку бессмертия на уровне сложности Ветеран (из-за слабой брони чит на Ветеране не работает, убивают быстро) Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 22 февраля, 2011 Автор Поделиться Опубликовано 22 февраля, 2011 Кстати говоря вот здесь уже приводили скрипт бессмертия: http://www.neoseeker.com/forums/675/t739996-god-mode/Я этот форум и раньше находил, но скрипт не сработал из-за неправильного адреса инъекции. Неизвестно для какой версии игры приведён скрипт, но если изменить адрес инъекции (у меня такая сигнатура сработала на двух версиях игры, кроме демок: 8bxxxxxxxxxxxxxx33xx85xx74xx8bxxe8xxxxxxxx3bxx75xxd9xxxxdc), то скрипт становится рабочим. И в CE нужно выбирать не exe-файл игры, а mfc32.dll. Скрипт полностью совпадает с моим выковыренным из тренера. Кто-нибудь объясните принцип работы скрипта. И почему в skipGodMode код отличается от оригинального? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 23 февраля, 2011 Поделиться Опубликовано 23 февраля, 2011 Я уже и статью склепал "Исследование работы чужих тренеров на примере игры Operation Flashpoint". Как думаете, можно выдранный код тут выложить, и статью?Учитывая что код инъеции уже выкладывали на форум, то привести его можно. А вот статью лучше не делать, т.к. получается ты будешь учить как рипать трейнеры.И в CE нужно выбирать не exe-файл игры, а mfc32.dll. Скрипт полностью совпадает с моим выковыренным из тренера. Кто-нибудь объясните принцип работы скрипта. И почему в skipGodMode код отличается от оригинального?mfc32.dll нсколько я помню это модуль которым пользуются множество Windows приложений написанных на C++ с библиотекой MFC. Это не модуль игрыПо поводу отличий. mov edi,[eax+00000354] mov edi,[eax+00000364]Это можно узнать только в отладке. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 26 февраля, 2011 Автор Поделиться Опубликовано 26 февраля, 2011 Всё разобрался. Теперь осталось грамотно сделать фильтр на игрока.В общем нашёл я цикл лечения частей тела, а сразу ниже цикла расположен некий call, в котором в ecx сохраняется [pPlayer+00000060]. И что это? Правильно, указатель на общее здоровье Общее здоровье также хранится в диапазоне от 0.0 до 1.0. Солдат умирает как только это здоровье становится >=1.0. Обычно в бою это здоровье уходит в единицу гораздно раньше здоровья частей тела. Но если вдруг части тела уйдут в единицу раньше, то и тогда солдат погибает. Замораживаем все 5 адресов на нуле и мы бессмертны К сожалению простая заморозка адресов в таблице не работает, нужна подмена кода. А значит придётся поломать голову над фильтром.Сколько времени игру ломаем, а вроде бы и ничего сложного нет. И кстати на уровне сложности Ветеран общее здоровье разумеется есть, просто быстрее расходуется. Почему CyberMan так неполноценно взломал игру только для сложности Кадет, да притом пошёл каким-то неведомым кружным путём, который я так и не понял, для меня загадка. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения