

ChestGlaring
Пользователи+-
Постов
30 -
Зарегистрирован
-
Победитель дней
8
ChestGlaring стал победителем дня 12 декабря 2020
ChestGlaring имел наиболее популярный контент!
Репутация
20 NoviceИнформация о ChestGlaring

Посетители профиля
Блок последних пользователей отключён и не показывается другим пользователям.
-
Cheat Engine 7.2 под XP https://we.tl/t-qm8TSQewpT SHA-1: 067DF0AD414C2B3A54E12AC899EDCA8E2337F64E Не работает Veh/Speedhack и куча ошибок при запуске, но для инъекции скриптов и поиска значений сойдет
-
Если Unity и чит будет писаться на C#, то можно создать свой список сущностей по типу или классу, который использует игра. Вместо CActor у тебя будет что-то другое. CActor[] EntityList = UnityEngine.Object.FindObjectsOfType<CActor>
-
После второй части, углубимся в работу виртуальной машины, а именно нам нужно понять как виртуальная машина понимает какую функцию надо выполнять при определенной команде. Тут все довольно просто, есть некоторый массив с нативными функциями, доступ к которым скрипт получает сравнивая их название. В этом методе помимо команд скриптов вызывающих нативные методы так же есть консольные команды. Массив с нативками выглядит следующим образом: Таким образом получаем доступ к нужной нам функции, которая создает предмет около игрока. Функция принимает в себя указатель на конструктор объекта, указатель на структуру игрока ( так и получаем координаты, где спавнить предмет ), адрес конструктора объекта, количество создаваемых предметов, тип компилятора и указатель на стек виртуальной машины. После выполнения рассматриваемого метода, виртуалка компилирует и ставит скомпилированный скрипт на выполнение в очередь. Отбросив мелочи, типа получение координат, угла камеры и прочего для создания предмета около игрока, на этом можно заканчивать, единственное, что указатель на специфичный конструктор объекта, вычисляет по id, но находится вне метода и передается по стеку. Ну и конечно же видосик. Прототип и сигнатура для тех, кто задумается создавать спавнер:
-
После передачи консольной команды в игру, происходит её компиляция. Сперва происходит проверка синтаксиса, после проверка существования выбранной сущности в массиве со всеми npc/предметами. Если все прошло хорошо, переходим к следующему пункту, а именно выбору типа компилятора. Всего существует 3 типа компиляторов: DefaultCompiler = 0 SysWindowCompileAndRun = 1 DialogueCompileAndRun = 2 Для компиляции скриптов выбирается SysWindowCompileAndRun, консольная команда разбивается на тип команды, ид объекта и количество объектов, а дальше происходит вызов виртуальной машины, в которую передаются baseValue, stateVM, stackID, resultValue, frame. На этом этапе уже возможно спавнить предметы, но будет слишком сложно найти все( и самое главное правильные ) переменные для спавна через виртуальную машину. А значит спустимся на уровень ниже, и найдем нативную функцию.
-
Долго проверять целый файл, скорее просто в заголовке файла XXX.play указана контрольная сумма в каком-нибудь CRC-32, одна записывается в память при открытии редактора карты, другая хранится в файле, при попытке считывания или записи в файл, сначала проверяется контрольная сумма, если они не сходятся - файл поврежден.
-
Восстанови структуру блока (если есть), а после выдели памяти больше, после чего сделай подмену указателей на массив объектов. В теории это должно работать, ведь какая разница игре из какого и в какой массивы добавлять объекты, но могут быть проверки, работающие с оригинальным указателем на массив, которые будут разбросаны по разным методам. Что-то похожее я делал для Left 4 Dead 2.