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

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

Используемые плагины: REtypedef

Берем любое автоматическое оружие и находим количество патронов.

Ставим бряк на доступ, переходим в игру и стреляем.

rE5yaXwGChs.jpg

Нам нужна инструкция, отнимающая патроны, так мы выйдем на функцию выстрела.

7FFBCE59564A - FF 8F 98000000  - dec [rdi+00000098] <<

Дальше делаем дамп Disrupt_b64.dll, запускаем IDA и ждем пока завершится анализ.

Переходим по адресу 7FFBCE59564A, мы находимся в функции, которая отнимает патроны, значит нам надо посмотреть откуда она вызывается.

UHJ5Bo_CBSw.jpg

Поднимаемся к началу функции видим надпись CODE XREF: переходим по ней дважды кликнув.

0gmhBIIIQu0.jpg

Теперь мы находимся в функции выстрела.

Нажимаем F5, чтобы декомпилировать функцию в псевдокод.

6GD6LfarIAo.jpg

Видим, что переменная v1 очень часто используется, скорее всего это базовый адрес. Можно его реконструировать в структуру, для повышения читабельности псевдокода.

wyDGAVB80eQ.jpg

Для того чтобы найти скорострельность, надо найти все условия, работающие с типом float, как их проверить? Лучше всего использовать ReClass. Где взять базовый адрес? использовать адрес регистра rdi в нем будет находится базовый адрес текущего оружия.

Я нашел всего 2 условия которые бы нам подходили:

if ( a3 <= *&WeaponBase->field_34 && *&WeaponBase->field_56 <= 0.0 )
if ( WeaponBase->field_152 && *&WeaponBase->field_904 > 0.0 )

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

Field_34 это 0x34 и т.д. Значит нам надо проверить 0x34, 0x56, 0x152 , 0x904.

e5gm8d-5v_Q.jpg

Единственное смещение, которое реагировало на выстрелы оказалось 0x34.
 

Теперь добавляем в таблицу базовый адрес оружия + 0x34, ставим бряк на доступ выбираем

F3 41 0F11 4C 24 34  - movss [r12+34],xmm1 <<

И пишем на нее скрипт.

cmp [r12+98],#10 //фильтр свой-чужой
jne code
mov [r12+34],(float)99 //любое значение больше 5

 

Скрытый текст

 

 

 

Изменено пользователем partoftheworlD
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

14 часа назад, partoftheworlD сказал:

Берем любое автоматическое оружие и находим количество патронов.

Ставим бряк на доступ, переходим в игру и стреляем.


 

У меня был другой способ. Я искал адрес расхождения прицела, когда тот увеличивался или уменьшался. Ставил на него бряк на запись и искал условия, которые записывали по нему. Сейчас плохо помню, что именно я делал, но я убрал все, что влияло на расхождение прицела.

 

14 часа назад, partoftheworlD сказал:

Для того чтобы найти скорострельность, надо найти все условия, работающие с типом float, как их проверить? Лучше всего использовать ReClass.


 

А вот мне программа ReClass не понравилась, давно снес.
 

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

5 часов назад, MasterGH сказал:

А вот мне программа ReClass не понравилась

CE было бы достаточно, просто привычка которая генерирует класс найденных значений. Удобно если пишешь трейнер или ленивый, чтобы выписывать значения руками.:-D

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

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

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

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