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

ChestGlaring

Пользователи+
  • Постов

    30
  • Зарегистрирован

  • Победитель дней

    8

ChestGlaring стал победителем дня 12 декабря 2020

ChestGlaring имел наиболее популярный контент!

Репутация

20 Novice

1 Подписчик

Информация о ChestGlaring

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Commit: adbb36b (Commits on Dec 18, 2020) ghidra_9.3_DEV_20201218_win64 ghidra_9.3_DEV_20201218_linux64 ghidra_9.3_DEV_20201218_osx64 Сборки из ветки debugger будут позже
  2. Commit: 5555566 (Commits on Dec 10, 2020) ghidra_9.3_DEV_20201211_win64 ghidra_9.3_DEV_20201211_linux64 ghidra_9.3_DEV_20201211_osx64
  3. Потому что такие значение у структуры. addr - указывает на первый элемент в массиве, у которого имеется имя array_size - количество элементов в массиве 0x16C / 8 + 4
  4. Не знаю куда скрипт лучше выложить, в общем вот дампер структур для игр на Game Maker для IDA На выходе получаем:
  5. Cheat Engine 7.2 под XP https://we.tl/t-qm8TSQewpT SHA-1: 067DF0AD414C2B3A54E12AC899EDCA8E2337F64E Не работает Veh/Speedhack и куча ошибок при запуске, но для инъекции скриптов и поиска значений сойдет
  6. [[<I Wanna Kill the Kamilia 3 v1.50.exe>+00450EB0]+C]+ 0xC9 = 1 "бессмертие" гг i_solid - 0xc9 Игра на GameMaker , поэтому все смещения и структуры подписаны. Вот еще некоторые в структуре игрока.
  7. Сборка 27.11.2020 Commit: 133d6c2 (Commits on Nov 24, 2020) WindowsLinux MacOS
  8. Если Unity и чит будет писаться на C#, то можно создать свой список сущностей по типу или классу, который использует игра. Вместо CActor у тебя будет что-то другое. CActor[] EntityList = UnityEngine.Object.FindObjectsOfType<CActor>
  9. После второй части, углубимся в работу виртуальной машины, а именно нам нужно понять как виртуальная машина понимает какую функцию надо выполнять при определенной команде. Тут все довольно просто, есть некоторый массив с нативными функциями, доступ к которым скрипт получает сравнивая их название. В этом методе помимо команд скриптов вызывающих нативные методы так же есть консольные команды. Массив с нативками выглядит следующим образом: Таким образом получаем доступ к нужной нам функции, которая создает предмет около игрока. Функция принимает в себя указатель на конструктор объекта, указатель на структуру игрока ( так и получаем координаты, где спавнить предмет ), адрес конструктора объекта, количество создаваемых предметов, тип компилятора и указатель на стек виртуальной машины. После выполнения рассматриваемого метода, виртуалка компилирует и ставит скомпилированный скрипт на выполнение в очередь. Отбросив мелочи, типа получение координат, угла камеры и прочего для создания предмета около игрока, на этом можно заканчивать, единственное, что указатель на специфичный конструктор объекта, вычисляет по id, но находится вне метода и передается по стеку. Ну и конечно же видосик. Прототип и сигнатура для тех, кто задумается создавать спавнер:
  10. После передачи консольной команды в игру, происходит её компиляция. Сперва происходит проверка синтаксиса, после проверка существования выбранной сущности в массиве со всеми npc/предметами. Если все прошло хорошо, переходим к следующему пункту, а именно выбору типа компилятора. Всего существует 3 типа компиляторов: DefaultCompiler = 0 SysWindowCompileAndRun = 1 DialogueCompileAndRun = 2 Для компиляции скриптов выбирается SysWindowCompileAndRun, консольная команда разбивается на тип команды, ид объекта и количество объектов, а дальше происходит вызов виртуальной машины, в которую передаются baseValue, stateVM, stackID, resultValue, frame. На этом этапе уже возможно спавнить предметы, но будет слишком сложно найти все( и самое главное правильные ) переменные для спавна через виртуальную машину. А значит спустимся на уровень ниже, и найдем нативную функцию.
  11. Но ведь и ты не спрашиваешь про общие принципы нахождения видовой матрицы. Какой вопрос - такой ответ. А в той игре, которая указана в названии темы, 3 видовых матрицы, для игрока, камеры и еще какой-то штуки.
  12. А что мешает взять dnSpy и просто найти, в каком методе используется видовая матрица? Затем взять CE Mono и перейти по методу найденному в dnSpy. Поиск можно начать с Camera, тем более, в зависимости от игры камер может быть несколько и у каждой будет своя матрица.
  13. Долго проверять целый файл, скорее просто в заголовке файла XXX.play указана контрольная сумма в каком-нибудь CRC-32, одна записывается в память при открытии редактора карты, другая хранится в файле, при попытке считывания или записи в файл, сначала проверяется контрольная сумма, если они не сходятся - файл поврежден.
  14. Восстанови структуру блока (если есть), а после выдели памяти больше, после чего сделай подмену указателей на массив объектов. В теории это должно работать, ведь какая разница игре из какого и в какой массивы добавлять объекты, но могут быть проверки, работающие с оригинальным указателем на массив, которые будут разбросаны по разным методам. Что-то похожее я делал для Left 4 Dead 2.
×
×
  • Создать...

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

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