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

Ultimap


MasterGH

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

post-3-0-52397900-1421550577_thumb.png
 
Данный инструмент позволяет найти call-ы и ret-ы в игре, которые связаны с каким-то событием в игре. call - вход в ветвь кода, ret - выход из ветви кода.
 
Описание функций (пока не полное)

  Показать контент

1. Нет данных.  Если игра вылетает, то попробовать поставить больше в два или более раз
2. Не понятно
3. Не понятно
4. Количество потоков по умолчанию 2 (если процесс поддерживает можно попробовать поставить 4 или больше). Если игра вылетает, попробовать поставить 1.
5. Не понятно
6. Начало сканирования
7. Пауза (код игры который выполняется вне паузы сканером не может учитываться)
8.  Остановить сканирование
9. Не понятно (возможно количество веток кода)
10. Код не выполнялся
11. Код выполнялся
12. Убрать из поиска инструкции между условным началом и ret  внутри ветви кода. Визуально это выглядит так. От начала функции до ret может попадать множество инструкций, которые выполнились так же по счетчику как и начало и ret. Это любые инструкции связанные с прыжками и с выходом из call-ов. Их можно убрать этой кнопкой.

 

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

 

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

 

13. Не понятно. Вызывает сообщение об ошибке
14. Убрать из фильтра ветви кода, которые вызывались НЕ указанное количество раз
15. Выбрать специфичные модули (чем их меньше тем меньше вероятность вылета игры)
16. Если опция активна, то все новые данные (после последнего сканирования) исключаются из результата (на практике не проверено мной)
17. Сброс сканирования
18. Поле, в которое нужно ввести число количества раз вызова ветви кода и нажать на 14(самый эффективный способ отсеять не нужные ветви кода)
19. Сбросить счетчик (все ветви кода буду считаться с нуля)
20. Поле результатов. Первая колонка содержит адрес, на который прыгает call из второй колонки. Третья колонка - счетчик срабатываний call.
21. Отображает результат отсева функций в поле 20
22. Не понятно

 
Что представляет из себя ветвь кода?

 
Функция в программировании, например, в C++/C# .

int Summ(int arg1, int arg2){  return arg1 + arg2;}int sum = Summ(5, 5)
Изменено пользователем MasterGH
Добавлены описания колонок для поля 20 (под первым спойлером).
Ссылка на комментарий
Поделиться на другие сайты

Спасибо MasterGH. Много применений. Сделал в своей теме ссылку сюда. Как написал Bromvol - нужно будет все это опробовать на практике.

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

К сожалению, я с понедельника ограничен по времени и силам. Началась рабочая неделя. На данное время интересной информации по ломанию игрушек у меня нет. 

 

Надо наработать схему, по которой можно будет по происходящим действиям в игре искать функции, повторять их, не повторять, повторять с измененными аргументами... и прочее. Пока этой схемы нет и все прощупывается. В общем если что-то толковое появиться, то будут статьи и возможно даже видео  (в том числе и Fallout 3, и по Chicken Invaders 4, где шифрованные значения, и по Function Hacker).

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

Да, было бы интересно разобрать хоть какой-нибудь рабочий пример по использованию этого Ultimap. А то в теории всё понятно, а на практике:

Все игры какие я пробовал вылетают. Иногда просто вылетают, иногда с BSOD'ом :( Надо будет попробовать советы выше, но я вроде всё пробовал, ничего не помогает. Может кто потом поделится инфой на каких осях и конфигах компов вылетов меньше.

Function Hacker не умеет аттачиться к 64-битным играм, а это - все современные игры :(

Так что пока единственными играми в которых мне удалось воспользоваться вызовами call это две игры с PDB-файлами (файл с именами функций и их аргументов), а именно Cry of fear (делал квиксейвы) и Wolfenstein The new order (прохождение сквозь стены).

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

Насколько я помню, для работы ультимапа нужен работающий DBVM. У меня он даже на чистенькой Windows 7 работает через раз, так что приходится трейсить код в основном руками.

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

  В 22.01.2015 в 12:39, aliast сказал:

Да, было бы интересно разобрать хоть какой-нибудь рабочий пример по использованию этого Ultimap. А то в теории всё понятно, а на практике:

Все игры какие я пробовал вылетают. Иногда просто вылетают, иногда с BSOD'ом :( Надо будет попробовать советы выше, но я вроде всё пробовал, ничего не помогает. Может кто потом поделится инфой на каких осях и конфигах компов вылетов меньше.

Function Hacker не умеет аттачиться к 64-битным играм, а это - все современные игры :(

Так что пока единственными играми в которых мне удалось воспользоваться вызовами call это две игры с PDB-файлами (файл с именами функций и их аргументов), а именно Cry of fear (делал квиксейвы) и Wolfenstein The new order (прохождение сквозь стены).

 

Привет. Ну, один пример уже был. Эта статья, которую ты переводил. Я просто не видел, что ты её переводил. Там я Ultimap-ом нашел зашифрованное значение. Можешь скачать эту игру и прогнать на практике. Т.е. ты на практике найдешь зашифрованное значение и место откуда оно вызывается

  Показать контент

По поводу вызовов call внутри игры, я работаю над практическими примерами. Создание вещей в мире, подбирание вещей на карте. Пытаюсь вызывать обе функции сразу, чтобы вещь попала в инвентарь или была взята в руки (смотря какая игра). Вещи разбрасывать рядом с игроком попытаюсь позже. Сейчас пытаюсь взять вещь через call находясь далеко от неё... 

 

БСОД у меня был один раз, когда я игру зависшую под Ultimap закрывал, а в CE заранее не останавливал работу Ultimap

 

Ultimap очень сильно тормозит игру, дай Бог чтобы было 1 - 4 fps и то хорошо.

 

Win7 64. Настройки игры надо ставить по минимуму. Оконные режим с минимальным читабельным разрешением. Отключать все, что обращается к жесткому диску (Интернет, антивирусы, фаерволы и прочее). Чем меньше работаешь с Ultimap тем меньше шанс, что игра вылетет. При повторных поисках я перезагружал игру и CE. 

 

Function Hacker очень капризный. Игры, которые я пытался с ним ковырять вылетаю через некоторое время

 

 

 

DBVM у меня работает прекрасно. Не разу не было, чтобы он у меня не грузился.  Win7 64 Pro лицензия. Проц интеловский E7500 (2 ядра 2,9Гц), GTX 560 Ti видюха. Я думаю Ultimap хорошо работает на мощном процессоре с быстрой памятью. Есть второй комп на котором я мог бы потестить Ultimap, он помощнее (i5-4670K 4 ядра 3,4Гц, GTX 980, твердотельный накопитель, памяти 16 Гб уже не помню какой-то быстрой памяти) , но этот комп занят под игрушки. За ним постоянно играют в arch age и он занят.

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

Эксперименты с Ultimap переносятся на другое время. Функции находятся и дампы со стека снимаются, и видны возможные аргументы функций как в стеке так и в регистрах, но происходят ошибки и вылеты при вызове функций...

 

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

 

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

 

 Подпишитесь на тему. Как будет что-то новое, то придет уведомление.

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

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

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

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