Andymit Опубликовано 5 октября, 2018 Поделиться Опубликовано 5 октября, 2018 Всем доброго времени суток! В очередной раз прошу совета. Говорю сразу: я все еще не ушел от новичка в гейм-хакинге, поэтому за возможные глупые и абсурдные ошибки прошу прощения. В общем, дело такое: пытаюсь поломать игру на бесконечное здоровье. Нашел истинное значение типа float, поставил бряк на что берет доступ к этому адресу, ибо на запись ни одна инструкция почему-то не срабатывала. Делал инъекцию на инструкцию, которая обращается к адресу в момент нанесения игроку урона. Ниже, под спойлером на скринах стрелками я указал, примерно на какую инструкцию я делал инъекцию. Вот часть кода: Спойлер label(code) label(return) label(gmp) newmem: movss xmm5,[gmp] jmp code code: movss [r15+58],xmm5 jmp return gmp: dd (float)100 GM_Player: jmp newmem nop Это работало, но естественно инструкция общая. То есть и рыбки вокруг меня жили долго и счастливо и не хотели никак помирать. Изначально хотел задать вопрос по отделению своих от чужих. Пытался делать фильтр свой/чужой как в видео на канале. Но эта идея не увенчалась успехом. Потом посмотрел способ Staple Intersection. Но найдя экранное значение, которое кстати оказался типа integer, сделал несколько попыток инъекции кода, но скрипт не запускался. И когда начал писать эту тему заметил, что инструкции, обращающиеся к НЕ экранному значению, при нанесении урона не всегда одинаковые: Спойлер На скринах, где инструкции у которых count 2 это я первый раз получил урон, где count 1 второй раз. Возможно, что я активировал тот скрипт, о котором писал выше (если честно моя дурья башка забыла был он включен или нет) и поэтому срабатывали другие инструкции, с другими регистрами? В общем, вопросы: 1. Объясните, пожалуйста, как такое может быть, что я показал на скринах? Почему при уроне во второй раз на адрес здоровья обращались другие, но вроде как идентичные инструкции? 2. Может ли быть такое, что истинное значение здоровья и экранное имеют разный тип (float и int)? 3. Возможно ли, что я нашел не истинное значение здоровья, т.к. breakpoint на запись на него не срабатывал? (Хотя при изменении этого значения менялось и экранное и в самой игре собственно здоровье реагировало). Ну и просто посоветуйте, если это конечно возможно в моем тугом случае, как поступить в данной ситуации, какие я ошибки допустил, как можно отделить "своего" от "чужого" ну и все в это духе. Заранее спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 октября, 2018 Поделиться Опубликовано 5 октября, 2018 2 часа назад, Andymit сказал: 1. Объясните, пожалуйста, как такое может быть, что я показал на скринах? Почему при уроне во второй раз на адрес здоровья обращались другие, но вроде как идентичные инструкции? Бряк на доступ же стоит, т.е одинаковые инструкции могут проскакивать например для перевода реального значения в визуальное. 2 часа назад, Andymit сказал: 2. Может ли быть такое, что истинное значение здоровья и экранное имеют разный тип (float и int)? Да 2 часа назад, Andymit сказал: 3. Возможно ли, что я нашел не истинное значение здоровья, т.к. breakpoint на запись на него не срабатывал? (Хотя при изменении этого значения менялось и экранное и в самой игре собственно здоровье реагировало). Возможно. Если игра на юнити, то может помочь модуль Mono, включив его получишь подписанные функции. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 6 октября, 2018 Поделиться Опубликовано 6 октября, 2018 9 часов назад, Andymit сказал: 1. Почему при уроне во второй раз на адрес здоровья обращались другие, но вроде как идентичные инструкции? Возможно, что разные виды урона обрабатываются разными инструкциями. (правда такое было на старых играх). 9 часов назад, Andymit сказал: 2. Может ли быть такое, что истинное значение здоровья и экранное имеют разный тип (float и int)? Конечно (чаще всего такое и бывает, т.к. для max. значения такая точность как float не нужна.) 10 часов назад, Andymit сказал: 3. т.к. breakpoint на запись на него не срабатывал? А вот здесь нужно уточнение. Вот эта инструкция movss [r15+58],xmm5 не срабатывает? Но при этом адрес правильный. Мне кажется ты где-то ошибаешься. Ссылка на комментарий Поделиться на другие сайты Поделиться
Andymit Опубликовано 8 октября, 2018 Автор Поделиться Опубликовано 8 октября, 2018 В 06.10.2018 в 00:04, partoftheworlD сказал: Возможно. Если игра на юнити, то может помочь модуль Mono, включив его получишь подписанные функции. Спасибо за ответ! За совет о модуле отдельное спасибо. В 06.10.2018 в 07:08, Garik66 сказал: Возможно, что разные виды урона обрабатываются разными инструкциями. (правда такое было на старых играх). Не, в моем случае урон был один) В 06.10.2018 в 07:08, Garik66 сказал: А вот здесь нужно уточнение. Вот эта инструкция movss [r15+58],xmm5 не срабатывает? Но при этом адрес правильный. Мне кажется ты где-то ошибаешься. Я находил адрес здоровья, ставил бряк на запись, но при нанесении мне урона ни одна инструкция к адресу моего здоровья не выскакивала. Возможно я дурак, а возможно так и было. Хотя чуть позже я попробовал сделать это еще раз и появлялись инструкции. Скорее всего я действительно просто что-то не то делал. Ну да, ладно. Спасибо за ответ! Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 8 октября, 2018 Поделиться Опубликовано 8 октября, 2018 Игра на движке Unity. Можно через Cheat Engine Mono найти функции и с ними работать. Можно встроить или модифицировать код, как здесь в примере через dnSPY. Спойлер 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Andymit Опубликовано 11 октября, 2018 Автор Поделиться Опубликовано 11 октября, 2018 В 09.10.2018 в 00:07, MasterGH сказал: Игра на движке Unity. Можно через Cheat Engine Mono найти функции и с ними работать. Можно встроить или модифицировать код, как здесь в примере через dnSPY. Спасибо за ответ! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения