Перейти к содержанию
Авторизация  
ChestGlaring

Поиск функции спавна предметов (Часть 3: Прощание с ОЗУ)

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

Опубликовано (изменено)

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

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

 

Pen7Y1h.png

 

Массив с нативками выглядит следующим образом:

 

TaUBHQh.png

 

Таким образом получаем доступ к нужной нам функции, которая создает предмет около игрока. Функция принимает в себя  указатель на конструктор объекта, указатель на структуру игрока ( так и получаем координаты, где спавнить предмет ), адрес конструктора объекта, количество создаваемых предметов,  тип компилятора и указатель на стек виртуальной машины.

 

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

Отбросив мелочи, типа получение координат, угла камеры и прочего для создания предмета около игрока, на этом можно заканчивать, единственное, что указатель на специфичный конструктор объекта, вычисляет по id, но находится вне метода и передается по стеку. Ну и конечно же видосик.
 

 

 

Прототип и сигнатура для тех, кто задумается создавать спавнер:

 

Спойлер

_DWORD *__fastcall SpawnEntity(_DWORD *pTESNPC, __int64 pPlayerCharacter, _BYTE *TESNPC_Constructor, int Amount, signed int unk_0, int stackframe, char CompilerType, char unk_1)

E8 ? ? ? ? 4C 89 B4 24 ? ? ? ? 48 8D 94 24 ? ? ? ? 48 8B C8 E8 ? ? ? ? 90 48 8B 9C 24 ? ? ? ? 48 85 DB 0F 84 ? ? ? ? F3 0F 10 43 ? F3 0F 11 44 24

 

 

Изменено пользователем ChestGlaring

Поделиться сообщением


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр
Авторизация  

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

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

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