- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 295
- Реакции
- 7
Народ, решил накидать небольшой гайд по внутренностям BloodStrike. Движок у них — NetEase Messiah, и поначалу он может вынести мозг своей архитектурой указателей, особенно если привык к классике. Для тех, кто хочет поковыряться во внутреннем аимботе, это будет неплохой отправной точкой.
База и иерархия
Все начинается с модуля, тут стандартно:
Messiah плотно использует вложенные указатели для доступа к локальному игроку и камере. Ориентируйтесь на эти смещения:
Работа со списком сущностей
EntityList — это кольцевой связный список. Идете от головы, пока не упретесь в нее снова.
Трансформация костей
Тут главное не запутаться: ворлд-спейс кости напрямую не хранятся. Есть относительная матрица костей и Actor Transform. Их нужно перемножать, иначе на выходе будет каша. Логика для Messiah:
Особенности реализации аимбота
Silent Aim тут требует работы с углами камеры (Camera + 0x110) и FOV (Camera + 0x338). Самый простой путь для теста — MouseEvent. Логика элементарная: итерируем сущности, фильтруем по маске (Players == 2), берем 7-ю кость (шея/голова), прогоняем через WorldToScreen и при попадании в FOV сдвигаем курсор.
Надеюсь, кому-то сэкономит время при реверсе. Кто уже пробовал цепляться к этой версии Messiah, какие нюансы по античиту словили?
База и иерархия
Все начинается с модуля, тут стандартно:
Код:
uintptr_t base = (uintptr_t)GetModuleHandleA(NULL);
- ClientEngine: base + 0x65F7AD0
- IGameplay: ClientEngine + 0x58
- ClientPlayer: IGameplay + 0x58
- Camera: ClientPlayer + 0x238
- LocalActor: ClientPlayer + 0x288
Работа со списком сущностей
EntityList — это кольцевой связный список. Идете от головы, пока не упретесь в нее снова.
Код:
EntityList Head: *(uintptr_t*)(base + 0x6E4D0D8) + 0x8
Трансформация костей
Тут главное не запутаться: ворлд-спейс кости напрямую не хранятся. Есть относительная матрица костей и Actor Transform. Их нужно перемножать, иначе на выходе будет каша. Логика для Messiah:
Код:
static void MessiahMatrixAdd(const XMFLOAT3X4& bonemat, const XMFLOAT3X4& pos, Vector3& out) {
out.x = (pos._11 * bonemat._32) + (pos._14 * bonemat._33) + (pos._23 * bonemat._34) + pos._32;
out.y = (pos._12 * bonemat._32) + (pos._21 * bonemat._33) + (pos._24 * bonemat._34) + pos._33;
out.z = (pos._13 * bonemat._32) + (pos._22 * bonemat._33) + (pos._31 * bonemat._34) + pos._34;
}
Особенности реализации аимбота
Silent Aim тут требует работы с углами камеры (Camera + 0x110) и FOV (Camera + 0x338). Самый простой путь для теста — MouseEvent. Логика элементарная: итерируем сущности, фильтруем по маске (Players == 2), берем 7-ю кость (шея/голова), прогоняем через WorldToScreen и при попадании в FOV сдвигаем курсор.
- Bone Pointer Array: ActorInstance + 0x278 -> +0x18 -> +0x40 -> +0x18 -> +0x90 -> +0x8
- Матрица вида находится в области Camera + 0x40
- Матрица вида находится в области Camera + 0x40
Надеюсь, кому-то сэкономит время при реверсе. Кто уже пробовал цепляться к этой версии Messiah, какие нюансы по античиту словили?