partoftheworlD Опубликовано 13 мая, 2016 Поделиться Опубликовано 13 мая, 2016 (изменено) Используемые плагины: REtypedef Берем любое автоматическое оружие и находим количество патронов. Ставим бряк на доступ, переходим в игру и стреляем. Нам нужна инструкция, отнимающая патроны, так мы выйдем на функцию выстрела. 7FFBCE59564A - FF 8F 98000000 - dec [rdi+00000098] << Дальше делаем дамп Disrupt_b64.dll, запускаем IDA и ждем пока завершится анализ. Переходим по адресу 7FFBCE59564A, мы находимся в функции, которая отнимает патроны, значит нам надо посмотреть откуда она вызывается. Поднимаемся к началу функции видим надпись CODE XREF: переходим по ней дважды кликнув. Теперь мы находимся в функции выстрела. Нажимаем F5, чтобы декомпилировать функцию в псевдокод. Видим, что переменная v1 очень часто используется, скорее всего это базовый адрес. Можно его реконструировать в структуру, для повышения читабельности псевдокода. Для того чтобы найти скорострельность, надо найти все условия, работающие с типом 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. Единственное смещение, которое реагировало на выстрелы оказалось 0x34. Теперь добавляем в таблицу базовый адрес оружия + 0x34, ставим бряк на доступ выбираем F3 41 0F11 4C 24 34 - movss [r12+34],xmm1 << И пишем на нее скрипт. cmp [r12+98],#10 //фильтр свой-чужой jne code mov [r12+34],(float)99 //любое значение больше 5 Скрытый текст Изменено 26 сентября, 2016 пользователем partoftheworlD 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 14 мая, 2016 Поделиться Опубликовано 14 мая, 2016 14 часа назад, partoftheworlD сказал: Берем любое автоматическое оружие и находим количество патронов. Ставим бряк на доступ, переходим в игру и стреляем. У меня был другой способ. Я искал адрес расхождения прицела, когда тот увеличивался или уменьшался. Ставил на него бряк на запись и искал условия, которые записывали по нему. Сейчас плохо помню, что именно я делал, но я убрал все, что влияло на расхождение прицела. 14 часа назад, partoftheworlD сказал: Для того чтобы найти скорострельность, надо найти все условия, работающие с типом float, как их проверить? Лучше всего использовать ReClass. А вот мне программа ReClass не понравилась, давно снес. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 14 мая, 2016 Автор Поделиться Опубликовано 14 мая, 2016 5 часов назад, MasterGH сказал: А вот мне программа ReClass не понравилась CE было бы достаточно, просто привычка которая генерирует класс найденных значений. Удобно если пишешь трейнер или ленивый, чтобы выписывать значения руками. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения