elrione Опубликовано 31 октября, 2022 Поделиться Опубликовано 31 октября, 2022 Допустим, мы работаем с GameMarker, где на одной инстуркций у нас может лежать чуть ли не вся игра, это нормально для движка. Допустим, мы хотим создавая скрипт ассемблера, создать еще и фильтр через cmp, поскольку нам нужно фильтровать поток проходящий через инструкцию и срабатывать только в нужным нам момент, иначе мы попросту запишем "что-то" не туда. Для этого у нас есть инструмент "Stack view", он нам покажет что было в стеке по условному "ebp", находим что в стеке в смещений "-38", были данные "00019A16", их и будем сравнивать. Вызовем любой не занятый регист, запишем в него ebp+48 и будем сравнивать, когда сравнение было удачным - выполнем нужные нам махинации с памятью. Собсвтенно как это выглядит: Спойлер newmem: push edx mov edx, [ebp-38] pushf cmp edx,19A16 je Crit jmp code Crit: popf pop edx fstp st(0) fld qword ptr [CritValue] fstp qword ptr [esi] pop esi jmp return CritValue: dq (double)205 code: popf pop edx movsd [esi],xmm0 pop esi jmp return Теперь к сути вопроса, как я могу найти все вариации в смещений "ebp-38"? Ну или узнать к чему они привязаны. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 1 ноября, 2022 Поделиться Опубликовано 1 ноября, 2022 Не совсем понял, чего ты хочешь добиться, но выглядит так, будто проще найти базовый адрес нужной тебе структуры, и писать в структуру значения напрямую... Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 1 ноября, 2022 Поделиться Опубликовано 1 ноября, 2022 Какая игра? Ссылка на комментарий Поделиться на другие сайты Поделиться
elrione Опубликовано 1 ноября, 2022 Автор Поделиться Опубликовано 1 ноября, 2022 3 часа назад, Partizan сказал: Какая игра? SYNTHETIK - Legion Rising. Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 2 ноября, 2022 Поделиться Опубликовано 2 ноября, 2022 (изменено) Посмотрел я её. Версия 39 GOG Не чего там в стеке крутить не надо. Просто трейсиш с условием и поднимаешься вверх. Смотришь за регистрами. В условие трейса ставишь то что выдаёт сработавшая инструкция на адресе. На жизни и патроны получилось так сделать. найти все вариации в смещений "ebp-38"? ищи выше по коду что пишет в ebp-38 UPDATE: Способом который я описывал выше получилось только на оружие сделать. Остальное пришлось сравнивать по стеку. Изменено 2 ноября, 2022 пользователем Partizan 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения