Sergey99 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 Всем привет, играл я в замечательную игру и решил поломать её немного. Есть адрес с координатами игрока, есть адрес смещения, которое прибавляется к координатам (каждое по отдельности X, Y, Z). Можно ли найти каким-либо образом способ увеличить смещение, так как оно меняется при изменении направления (когда мышью двигаешь и игрок поворачивается, то есть если, например, координата X у игрока в момент движения уменьшается, - значит смещение имеет знак 'минус'), в адреса смещения пишут сразу несколько инструкций все fstp не вижу ни где fmul, который как-то может относится к статичным множителям, на который в теории может умножаться смещение. Важна работа именно со смещениями, а то если сделать на горячие клавиши изменение координат, то будет выглядеть как телепорт, а надо чтобы перемещение было быстрым. Есть также в игре режимы ufo и noclip, в режиме ufo перемещение по координатам быстрое даже если менять угол направления (по моему мнению там используется какой-то множитель), Вот тоже самое хочется реализовать, кто может помочь? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 16 минут назад, Sergey99 сказал: координата X у игрока в момент движения уменьшается, - значит смещение имеет знак 'минус') Это не коэффициент, а угол (обычно в игре это косинус угла от -1 до +1). Коэффициент меняться не будет - смотри в структуре - обычно равно 1. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 1 час назад, Sergey99 сказал: а надо чтобы перемещение было быстрым. Желательно иметь более точную формулировку. А то не понятно, тебе нужно быстрое перемещение или быстрая скорость передвижения? Если особо не разбираешься во всяких трассировках, работе со стеком вызовов, то будет проще найти скорость передвижения. Если шаришь, то бери координаты, ставь бряк на пишущую инструкцию и смотри откуда и как рассчитывается новое значение, по ходу реверса найдешь и множители и формулы, которые рассчитывают новое значение(используя скорость передвижения) 1 час назад, Sergey99 сказал: ufo Делается за счет отключения записи координат и горячими клавишами создается перемещение по новым значениям с использованием оригинальных. 1 час назад, Sergey99 сказал: noclip Отключай коллизию. Берешь координаты, ставишь бряк на доступ и при столкновении с объектом смотришь какие новые инструкции появились. Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 (изменено) Нужна именно быстрая скорость перемещения. Можно будет сделать режим полёта только без прохождения сквозь стены + большая скорость. Изменено 17 марта, 2019 пользователем Sergey99 Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 Если всё дело в скорости то по каким критериям искать, нужно бегать и отсеивать или есть константа? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 2 минуты назад, Sergey99 сказал: Если всё дело в скорости то по каким критериям искать, нужно бегать и отсеивать или есть константа? Искать не получиться - константа. Либо реверс, либо методом "научного тыка" в структуре. Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 Ну я уже натыкался Тогда получается реверс, чтобы найти математическую функцию, которая отвечает за перемещение. Интересно будет ли там константа хранится как значение в адресе или же как часть инструкции ассемблера? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 2 минуты назад, Sergey99 сказал: Интересно будет ли там константа хранится как значение в адресе или же как часть инструкции ассемблера? Инструкция должна получить каким то образом значение константы, поэтому обязательно будет обращение к адресу этой константы. Твоя задача как раз найти это обращение (инструкцию) реверсом. Либо найдя адрес "научным тыком" в структуре, непосредственно получить это обращения, ставя бряк. ЗЫ: глянь ТЫК Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 Проблема в том, в адрес координат пишут много (5 инструкций fstp и в адрес смещения тоже 5 инструкций). Придётся изучать их все как я понял? Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 (изменено) И когда я говорил про константу, я имел ввиду такой вид записи, например, fmul [ebx+7C], 2. Эта двойка должна браться из какого-то адреса как я понял? Изменено 17 марта, 2019 пользователем Sergey99 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 10 минут назад, Sergey99 сказал: Придётся изучать их все как я понял? Нет, только те которые чаще всех срабатывают. Логично же, что не может инструкция рассчитывающая скорость движения срабатывать 1 раз в секунду. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 2 минуты назад, Sergey99 сказал: fmul [ebx+7C], 2. Такого никогда не будет. Но будет например такое fmul [ebx+7C]. И вот в [ebx+7C] будет лежать искомая константа. Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 6 минут назад, partoftheworlD сказал: Нет, только те которые чаще всех срабатывают. Логично же, что не может инструкция рассчитывающая скорость движения срабатывать 1 раз в секунду. Ровно 5 срабатывают одинаковое количество раз при движении Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 ЗЫ: хотя может быть и так (инструкция из топика на который давал ссылку): "Borderlands2.exe"+FBAC28: D9 81 10 03 00 00 - fld dword ptr [ecx+00000310] // вот здесь константа // ---------- DONE INJECTING ---------- "Borderlands2.exe"+FBAC2E: D8 4D FC - fmul dword ptr [ebp-04] // а это скорость Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 2 минуты назад, Garik66 сказал: ЗЫ: хотя может быть и так (инструкция из топика на который давал ссылку): "Borderlands2.exe"+FBAC28: D9 81 10 03 00 00 - fld dword ptr [ecx+00000310] // вот здесь константа // ---------- DONE INJECTING ---------- "Borderlands2.exe"+FBAC2E: D8 4D FC - fmul dword ptr [ebp-04] // а это скорость Ууу инъекция А я всё время пытался просто менять значения в адресах, не прибегая к инъекциям, так как это палевно в некоторых новых играх с системой защиты. Вот и в моём случае цель найти константу и поменять её в адресе, не прибегая к инъекциям. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 1 минуту назад, Sergey99 сказал: не прибегая к инъекциям. Так при чем здесь инъекция - ты же найдешь нужный указатель и смещение и меняй пжлста. Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 Только что, Garik66 сказал: Так при чем здесь инъекция - ты же найдешь нужный указатель и смещение и меняй пжлста. Это да, просто кое-кто давно мне предлагал через инъекции менять константу, а мне ведь это не нужно было, но способ он действенный предложил, только вот думаю в новых играх это будет палевно :) Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 Если хочешь быструю скорость передвижения Ищи int или float По типу - Ходьба = 1 Зажал шифт, ищешь увеличившиеся значения и так по кругу Потом уже пишешь скрипт А с полетом можно делать изменения координат на c++ с биндом на определенные клавиши Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 3 минуты назад, roma91212 сказал: Если хочешь быструю скорость передвижения Ищи int или float По типу - Ходьба = 1 Зажал шифт, ищешь увеличившиеся значения и так по кругу Потом уже пишешь скрипт А с полетом можно делать изменения координат на c++ с биндом на определенные клавиши Зачем C++, есть же C# с импортом dll для работ с памятью Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 33 минуты назад, Sergey99 сказал: Зачем C++, есть же C# с импортом dll для работ с памятью Тут уже как хочешь Решать тебе Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 1 час назад, Garik66 сказал: ЗЫ: хотя может быть и так (инструкция из топика на который давал ссылку): "Borderlands2.exe"+FBAC28: D9 81 10 03 00 00 - fld dword ptr [ecx+00000310] // вот здесь константа // ---------- DONE INJECTING ---------- "Borderlands2.exe"+FBAC2E: D8 4D FC - fmul dword ptr [ebp-04] // а это скорость Я пытался через брейкпоинты найти значение, но постоянно натыкался на меняющееся миллион раз в секунду, а это уже не константа. Это кусок кода, который работает именно с координатой X (не смещение, не углы, не коэффициенты): fld dword ptr [esp+48] fsub dword ptr [ebx] fmulp st(1),st(0) fadd dword ptr [ebx] fstp dword ptr [ebx] Вопросы у меня вызывает fmulp st(1), st(0), для чего же она здесь если не умножение на константу? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 1 час назад, Sergey99 сказал: Это кусок кода А выше 1 час назад, Sergey99 сказал: fld dword ptr [esp+48] по коду есть ещё одно fld? Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 1 минуту назад, Garik66 сказал: А выше по коду есть ещё одно fld? нет, выше fst, судя по всему это начало работы с координатой Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 марта, 2019 Поделиться Опубликовано 17 марта, 2019 1 минуту назад, Sergey99 сказал: нет, выше fst, судя по всему это начало работы с координатой Тогда ещё выше. Ладно понятно, Это смотреть лучше самому чем вопросы задавать. Но мне некогда Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey99 Опубликовано 17 марта, 2019 Автор Поделиться Опубликовано 17 марта, 2019 Только что, Garik66 сказал: Тогда ещё выше. Ладно понятно, Это смотреть лучше самому чем вопросы задавать. Но мне некогда Если уж совсем выше то есть вот это: fld dword ptr [esp+70]. Через брейк узнал адрес, который был esp+70, но там опять быстро меняющееся значение, то ноль, то больше нуля 6-ти значное или даже больше. Я так же нашёл статейку про взлом скорости, где игра Metro использовалась, проблема в том, что там ещё искали текстовые метки, но в CoD MW2, вряд ли они будут, к тому же консоль в игре отключена (злобные разработчики) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения