Grom-Skynet Опубликовано 18 декабря, 2011 Поделиться Опубликовано 18 декабря, 2011 Делаем высокий прыжок. JumpHack Инструменты: 1- Отладчик OLLYDBG v1.10 2- Cheat Engine 6.1 3- Игра к примеру Metro 2033 1-Запустим игру. Пока что до главного меню. Подробнее об этом: Для игр которые нельзя переключить в оконный режим в настройках самой игры.. находим файл конфигов и прописываем там вот это r_fullscreen off сохраняем и запускаем игру. 2-Присоединим к игре отладчик. Ollydbg v1.10 Подробнее об этом: Запускаем отладчик Ollydbg v1.10 выбираем меню File и там Attach. и в открывшемся окне выбираем наш процесс в данном случае Metro 2033. И нажимаем Attach ( Присоединится ). Как отладчик присоединится к игре он поставит игру на паузу ( в правом нижнем углу будет ) Нажимаем клавишу F9 и снимаем игру с паузы продолжаем выполнение кода. 3-Приступим к поиску и взлому. Подробнее об этом: Для начала выберем нужный нам модуль ( а нам нужно metro2033.exe ). В меню Veiw выбираем Executable modules в открывшимся окне выбираем требуемый нам модуль ( а нам нужно metro2033.exe ). После тока как выбрали нужный нам модуль двойным щелчком.. нужно проверить выбрался ли он... Если нет то повторить выбор заново...В заголовке главного окна должно появиться имя нашего модуля. Мы собираемся ломать высоту прыжка... для этого нам нужно найти соответствующею текстовую метку.. это будет нашей отправной точкой.. Часто разработчики в играх высоту прыжка помечают как "jump_speed" вот ее и будем искать. Правой клавишей мыши в окне кода нашего модуля и выбираем Search for и там All referenced text strings Отладчик начнет искать все текстовые метки и по завершению поиска откроется новое окно с результатом... В этом окне правой клавишей мыши и в открывшемся меню Search for text Откроется поле для ввода текста.. вводим jump_speed без кавычек ( с кавычками не найдет ) ставим обе галочки и нажимает Ок. Отладчик найдет строчку с jump_speed... в игре она может быть не одна.. перемещение по списку в пределах найденного значения клавиши Ctrl+L. Как нашли нужную текстовую метку... двойной щелчок левой клавишей мыши по ней и переходим в код нашего модуля.. Нам нужно поймать момент когда игра считывает параметры прыжка игрока.. а это происходит при загрузке... Ставим бряк на наш код ( Простая точка остановки ставится клавишей F2 ) как сделали это наш адрес выделился другим цветом это и значит то что точка остановки поставлена... Что бы она сработала нужно начать загружать игру.. я просто выберу продолжить игру.. И практически сразу срабатывает наш бряк и отладчик ставит игру на паузу... и наш адрес еще раз выделяется... Когда произойдет остановка, нажимая клавишу F8 (но без фанатизма, не нужно жать 1000 раз, обычно то что нас интересует происходит рядом, в ближайших 10-15 инструкций, по крайней мере в большинстве случаев) При прохождении по коду в ручную с помощью клавиши F8 находим вот это и обратите внимание на секцию которая находится слева по центру, между секциями №1 и №2, это информационная секция, которая упрощает жизнь, в ней часто видны цифры и не только, в удобоваримом виде. Так вот, как только вы в ней увидите SS=6.0000000 (это значение высоты прыжка заданное конфигурацией, в данном случае интересует именно это), нажмите на этой строчке правой кнопкой мыши, и выбирите "Modify value", в открывшемся окошке введите например 20. После этого снимите бряк ( Простая точка остановки ставится клавишей F2 ) снимается этой же клавишей которой и ставилась..И нажмите F9 что бы отладчик снял игру с паузы и игра смогла продолжить загрузку... Как игра загрузилась... пробуем прыгнуть... Оооо чудо мы стали прыгать высоко... Мы достигли нашей цели...ура... 4-Пишем скрипт. Используя Cheat Engine 6.1 Подробнее об этом: Будем использовать инструкцию под адресом 00881B37 Скрипт высокий прыжок Игра Metro 2033 v1.0.0.1 [ENABLE] alloc(newmem,2048) label(returnhere) newmem: mov [esi+74],(float)20 jmp returnhere metro2033.exe+481B37: jmp newmem returnhere: [DISABLE] metro2033.exe+481B37: movss [esi+74],xmm0 dealloc(newmem) Этим скриптом мы подмениваем стандартный параметр прыжка на свой))) P.S. Мы добились поставленной цели.. Плюсы этого метода то что функция прыжка получается как бы это сказать правильной что ли... то есть скорость набора высоты осталась прежней и обратно возвращается как раньше поменялось тока высота самого прыжка.... Минус то что работает тока при загрузке.. и сменить высоту прыжка можно будет тока при следующей загрузке... или при переходе из локации в локацию. 4 Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 19 декабря, 2011 Поделиться Опубликовано 19 декабря, 2011 У меня есть подозрение, что ещё что-то интересное происходит в процедуре по адресу 0x00881B16, т.к. перед вызовом этой процедуры мы запихиваем в стек два аргумента, ("fp32" и "jump_speed"). [esp+C] сильно походит на [base address + offset], т.е. это какая-то структура, так что вполне вероятно, что процедура по указанному выше адресу кушает какой-то идентификатор ("fp32") и то, что ей надо сделать. А сделать ей надо "jump_speed", т.е. посчитать высоту прыжка.А то фигня же какая-то получается - может я только в самом начале любимого уровня, хочется головой о потолок побиться, а приходится ждать загрузки следующего.Но за труды - всё равно плюс. Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 19 декабря, 2011 Автор Поделиться Опубликовано 19 декабря, 2011 Спс .. за плюс.Неее.. Мы ловим момент когда игра считывает параметры игрока из текстовых документов в архиве игры... конфигиЭто выглядит вот так...PUSH [перем]переменная_указывающая_на_файлPUSH [текстовая_строка]"jump_speed"CALL [функция]получить_параметрПо этому мы и работаем с кодом который после этих функций..А как часто игра считывает эти параметры зависит от разработчиков... пример игра Сталкер Чистое Небо... да там еще до кучи и параметр стандартного прыжка тоже равен (float)6.0000 тк вот игра считывает этот параметр каждый раз после смерти... Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 декабря, 2011 Поделиться Опубликовано 19 декабря, 2011 По большому счету, можно в памяти процесса создать поток, и заставить его вызывать функцию считывания параметров несколько раз в секунду с нужными параметрами. Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 19 декабря, 2011 Автор Поделиться Опубликовано 19 декабря, 2011 5-Дополнение к статье.Я вот сегодня подумал и решил дописать дополнение к статье Конечный результат хранится в esi+74)))) поставим бряк на эту инструкцию movss [esi+74],xmm0 и начнем загружать игру...Сработал бряк отлично посмотрим что у нас в esiПростыми вычислениями мы получаем адрес 15D59920.. смотрим дамп там то что нам нужно...float 6.0000. Отлично снимаем бряк нажимаем ran=F9 До-загружаем игру и смотрим опять дамп... все ок .. по нашему адресу наше значение... Заходим в игру и ставим бряк на адрес ( на чтение ).. Срабатывает одна инструкция.. movss xmm1,[eax+000000A0] Пишем скрипт...alloc(newmem,2048)label(returnhere)newmem:push [eax]mov [eax],(float)20movss xmm1,[eax]pop [eax]jmp returnheremetro2033.exe+4EE59B:jmp newmemnopnopnopreturnhere:[DISABLE]metro2033.exe+4EE59B:movss xmm1,[eax+000000A0]dealloc(newmem)[ENABLE]Скрипт пишется именно так... потому что в [eax+000000A0] хранится стандартный параметр прыжка float 6.00000.. и его трогать не надо .. так как если изменить его... то в стандарт привести его сможет тока загрузка .. но нам это не нужно...Не правильноmovss xmm1,[eax+000000A0]mov [eax+000000A0],(float)20Правильноmov [eax],(float)20movss xmm1,[eax]pop [eax]push [eax]P.S. Keng все ок ... теперь можно биться головой об потолок в любой момент.. когда захочется...))) B) Спс. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 19 декабря, 2011 Поделиться Опубликовано 19 декабря, 2011 Хорошее дополнение иногда игрок должен получить по голове чтоб придти в себя, а то бывает игрок играет полчаса не может проходить миссию к примеру раз по потолку перезагрузка мозга и всё. Grom-Skynet в Олай перехватить такие фуНкции легче чем CE? Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 19 декабря, 2011 Автор Поделиться Опубликовано 19 декабря, 2011 Хорошее дополнение иногда игрок должен получить по голове чтоб придти в себя, а то бывает игрок играет полчаса не может проходить миссию к примеру раз по потолку перезагрузка мозга и всё. Grom-Skynet в Олай перехватить такие фуНкции легче чем CE?CE ты просто не найдешь где и что ловить... вот как то так....))) Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 19 декабря, 2011 Поделиться Опубликовано 19 декабря, 2011 В Олай я еще не разобрался может на днях попробую подключить игру какую нибудь попробую юзать как раз твои статьи по Олай мне понадобится. Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 19 декабря, 2011 Автор Поделиться Опубликовано 19 декабря, 2011 Ну вот и отлично .. если что пиши подскажу....))) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 19 декабря, 2011 Поделиться Опубликовано 19 декабря, 2011 Grom-Skynet, твой пятый пост довольно хорош Чем чаще будешь использовать подобные "витиеватые приемы" по установке определённых типов бряков на определённые адреса, тем больше ты овладеешь интуицией в создании очень сложных читов. Поздравляю Как и Xipho я тоже сходу подумал про поток на АА-скриптах createthread("метка в выделенной памяти") и совсем забыл, что адрес из структуры может постоянно или с другой периодичностью читаться для установки прыжка при инициализации "person controller". Действительно надо ставить бряк на чтение и экспериментировать, что ты в принципе успешно сделал. "person controller" это название условного класса кода по управлению 3D-моделью героя. Модель героя и этот класс инициализируются вместе с новой сценой. Данные прыжка, позиции 3D-модели, позиции камеры и другие устанавливаются из данных в ресурсах в структуру героя. Когда пользователь пытается прыгать, то читается адрес со значением высоты прыжка из этой структуры. Как-то так... Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 19 декабря, 2011 Автор Поделиться Опубликовано 19 декабря, 2011 Благодарю..... Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 14 июня, 2012 Поделиться Опубликовано 14 июня, 2012 Прошел по статье Grom-Skynet_а (Статья оч. хорошая) загрузил игру в Ollydbg сделал высокий прыжок для MaxPayne и Max Payne 2, 8-)Самое интересное, при выстреле по врагам враги улетают. Ссылка на комментарий Поделиться на другие сайты Поделиться
ARM4ND0 Опубликовано 14 июня, 2012 Поделиться Опубликовано 14 июня, 2012 А что, в Max Payne'e можно прыгать ?? Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 14 июня, 2012 Поделиться Опубликовано 14 июня, 2012 Первая и вторая часть игры там есть прыжок на месте (клава Пробел.). Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 19 мая, 2013 Поделиться Опубликовано 19 мая, 2013 что то не получается оконный режим.r_fullscreen on изменил на r_fullscreen off.В общем win8после запуска возвращается on, в свойствах установил только чтение не помогает, и еще как выйти в меню, по умолчание не помогает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 19 мая, 2013 Автор Поделиться Опубликовано 19 мая, 2013 Игра метро 2033 версия 1.2.. если да то это обновление глюченное..... качай себе 1.0 или 1.1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 19 мая, 2013 Поделиться Опубликовано 19 мая, 2013 Версия игры 1.0.0.1 +Ranger Pack DLC Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 6 июня, 2013 Автор Поделиться Опубликовано 6 июня, 2013 Версия игры 1.0.0.1 +Ranger Pack DLCи разрешение сделай 800 на 600... и ту функцию впиши и все ок...будет Ссылка на комментарий Поделиться на другие сайты Поделиться
MoL4uN87 Опубликовано 7 июня, 2013 Поделиться Опубликовано 7 июня, 2013 что делать когда отладчик поставил игру на паузу нажимаю ф9 и терминатед (игра крушится) проверял на DMC 64битная винда? Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 7 июня, 2013 Автор Поделиться Опубликовано 7 июня, 2013 Бежать в школу и учиться читать...... Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 27 сентября, 2022 Поделиться Опубликовано 27 сентября, 2022 функцию movement ищем и на на дмамп прыг пишем..... как ? superjumpHook: copucodesuperjump: lea rcx,[rbx + $12345678] movss [rcx],xmm0 cmp [ksuperjump],0 jz @f fld [pJump] fmul dword[rcx] fstp dword[rcx] fld [pJump] fmul dword[rcx - $4] fstp dword[rcx - $4] fld [pJump] fmul dword[rcx - $8] fstp dword[rcx - $8] @@: ret хоть так... через... movss чуть по другому будет......ток мой код не мореть.... там с копи офсета Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения