Перейти к содержанию

[Call of Duty Modern Warfare 2] - изменение скорости персонажа


Рекомендуемые сообщения

2 часа назад, Sergey99 сказал:

непонятно зачем там нужен оператор смещения >>)

 

11 часов назад, partoftheworlD сказал:

Бинарное умножение на 16

 

 

2 часа назад, Sergey99 сказал:

как вы нашли этот параметр

Магия реверса, по строкам находишь функцию регистрирующую команды, которая принимает как аргументы 

 

Имя команды           "g_speed    "
Минимальное значение  "190        "
Маска 1               "0x80000000 "
Маска 2               "0x7F7FFFFF "
Максимальное значение "192        "
Описание              "bla-bla-bla"

 

Дальше входишь в эту функцию, и смотришь куда ведет тебя имя команды и минимальное значение, входишь снова в функцию, которая принимает эти значения. Так как можно предположить, что принимаемые аргументы не просто так прописаны, можно сделать вывод, что по имени команды каким-то образом вычисляется положение блока памяти, которое относится к передаваемой команде. А значит надо присмотреться к циклам и массивам.


В этой статье что-то похожее рассматривал уже.

 

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 53
  • Создана
  • Последний ответ

Топ авторов темы

Популярные дни

4 минуты назад, partoftheworlD сказал:

 

 

 

Магия реверса, по строкам находишь функцию регистрирующую команды, которая принимает как аргументы 

 


Имя команды           "g_speed    "
Минимальное значение  "190        "
Маска 1               "0x80000000 "
Маска 2               "0x7F7FFFFF "
Максимальное значение "192        "
Описание              "bla-bla-bla"

 

Дальше входишь в эту функцию, и смотришь куда ведет тебя имя команды и минимальное значение, входишь снова в функцию, которая принимает эти значения. Так как можно предположить, что принимаемые аргументы не просто так прописаны, можно сделать вывод, что по имени команды каким-то образом вычисляется положение блока памяти, которое относится к передаваемой команде. А значит надо присмотреться к циклам и массивам.


В этой статье что-то похожее рассматривал уже.

 

А вот теперь если представить имеется игра с динамическим распределением памяти, у неё инструкции расположены по адресам, мне CE, показывает, например, инструкцию сохранения координат по такому адресу: game.exe+842432, где game.exe = 00400000 - базовый адрес модуля, а 842432 - смещение до адреса с инструкцией.

Может ли меняться смещение (в моём случае 842432) при динамическом распределении памяти и при статическом?

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, Sergey99 сказал:

Может ли меняться смещение (в моём случае 842432) при динамическом распределении памяти и при статическом?

Нет, это значение является относительным виртуальным адресом, которое всегда будет равно этому значению на текущем патче.

 

Цитата

RVA - это сокращение от Relative Virtual Address, т.е. относительный виртуальный адрес. "Относительно чего?" - спросите вы. "Относительно Image Base" - отвечу я. Например, если какая-либо строка хранится в памяти по адресу 450000h, и Image Base = 400000h, то RVA этой строки равен 450000h - 400000h = 50000h

 

Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, partoftheworlD сказал:

RVA - это сокращение от Relative Virtual Address, т.е. относительный виртуальный адрес. "Относительно чего?" - спросите вы. "Относительно Image Base" - отвечу я. Например, если какая-либо строка хранится в памяти по адресу 450000h, и Image Base = 400000h, то RVA этой строки равен 450000h - 400000h = 50000h

Спасибо, это стоит запомнить :)

12 минут назад, partoftheworlD сказал:

Нет, это значение является относительным виртуальным адресом, которое всегда будет равно этому значению на текущем патче.

 

 

Просто в некоторых играх адреса инструкций в наглую меняются при перезапуске, возможно я не помню, но тогда CE мне показывал полный адрес без прибавления смещения к базовому адресу, может быть такое?

Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.