Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
вот это то что ты написал entity->instance->0x8->0x0->0x0
это (мои названия. хз как по факту называется) у айдентити лежит на 0x8 ClassTemplate*, там есть всякое говно включая шема биндинг класса, можешь там покопаться. там инфа вроде есть о бейз классе
C++:
class ClassInfo
{
const char* name_1{};
const char* name_2{};
const char* name_3{};
ClassTemplate* cls_template{};
ClassInfo* base_class{};
CSchemaClassBinding* binding{};
};
class ClassTemplate//na (identity + 8) lezhit ukazatel na eto
{
void* some_base_shit_unk{};
void* unk_1{};
void* unk_2{};
void* unk_3{};
void* unk_4{};
ClassInfo* class_info{};//tut binding est'
//at 0x108 is ClassMetaDef* metadef;
};
class ClassMetaDef
{
const char* server_name{};
const char* client_name{};
ClassTemplate* class_template{};
const char* scoped_name{};
void* unk{};
std::uint32_t id{};
public:
std::string_view GetClientName() const noexcept
{
if (!client_name)
return {};
return client_name;
}
const auto& GetClassTemplate() const
{
if (!class_template)
throw std::runtime_error{std::format(R"(ClassMetaDef::class_template is nullptr for "{}"!)", GetClientName())};
return *class_template;
}
};
а по факту если хочешь можешь заранее часто встречающиеся биндинги из шемы брать определенных классов(крип хуип и так далее) и сразу напрямую сравнивать указатели в классинфо.
либо можешь тем же самым путём пойти и темплейты а не биндинги сравнивать. метадефы лежат в таблице в CNetworkGameClient, в метадефе есть указатель на темплейту
вот это то что ты написал entity->instance->0x8->0x0->0x0
это (мои названия. хз как по факту называется) у айдентити лежит на 0x8 ClassTemplate*, там есть всякое говно включая шема биндинг класса, можешь там покопаться. там инфа вроде есть о бейз классе
C++:
class ClassInfo
{
const char* name_1{};
const char* name_2{};
const char* name_3{};
ClassTemplate* cls_template{};
ClassInfo* base_class{};
CSchemaClassBinding* binding{};
};
class ClassTemplate//na (identity + 8) lezhit ukazatel na eto
{
void* some_base_shit_unk{};
void* unk_1{};
void* unk_2{};
void* unk_3{};
void* unk_4{};
ClassInfo* class_info{};//tut binding est'
//at 0x108 is ClassMetaDef* metadef;
};
class ClassMetaDef
{
const char* server_name{};
const char* client_name{};
ClassTemplate* class_template{};
const char* scoped_name{};
void* unk{};
std::uint32_t id{};
public:
std::string_view GetClientName() const noexcept
{
if (!client_name)
return {};
return client_name;
}
const auto& GetClassTemplate() const
{
if (!class_template)
throw std::runtime_error{std::format(R"(ClassMetaDef::class_template is nullptr for "{}"!)", GetClientName())};
return *class_template;
}
};
а по факту если хочешь можешь заранее часто встречающиеся биндинги из шемы брать определенных классов(крип хуип и так далее) и сразу напрямую сравнивать указатели в классинфо.
либо можешь тем же самым путём пойти и темплейты а не биндинги сравнивать. метадефы лежат в таблице в CNetworkGameClient, в метадефе есть указатель на темплейту
Там мне бы хотелось чтото легкое, просто чтобы узнать является ли данная сущность героем или крипом. Я смотрел в джаваскриптовые, и там какая-то непонятная херня вызывается.
Ну да, я по твоему старому гайду делал так собственно.
вот это то что ты написал entity->instance->0x8->0x0->0x0
это (мои названия. хз как по факту называется) у айдентити лежит на 0x8 ClassTemplate*, там есть всякое говно включая шема биндинг класса, можешь там покопаться. там инфа вроде есть о бейз классе
Код:
class ClassInfo
{
const char* name_1{};
const char* name_2{};
const char* name_3{};
ClassTemplate* cls_template{};
ClassInfo* base_class{};
CSchemaClassBinding* binding{};
};
class ClassTemplate//na (identity + 8) lezhit ukazatel na eto
{
void* some_base_shit_unk{};
void* unk_1{};
void* unk_2{};
void* unk_3{};
void* unk_4{};
ClassInfo* class_info{};//tut binding est'
//at 0x108 is ClassMetaDef* metadef;
};
class ClassMetaDef
{
const char* server_name{};
const char* client_name{};
ClassTemplate* class_template{};
const char* scoped_name{};
void* unk{};
std::uint32_t id{};
public:
std::string_view GetClientName() const noexcept
{
if (!client_name)
return {};
return client_name;
}
const auto& GetClassTemplate() const
{
if (!class_template)
throw std::runtime_error{std::format(R"(ClassMetaDef::class_template is nullptr for "{}"!)", GetClientName())};
return *class_template;
}
};
а по факту если хочешь можешь заранее часто встречающиеся биндинги из шемы брать определенных классов(крип хуип и так далее) и сразу напрямую сравнивать указатели в классинфо.
либо можешь тем же самым путём пойти и темплейты а не биндинги сравнивать. метадефы лежат в таблице в CNetworkGameClient, в метадефе есть указатель на темплейту
В общем, структура очень полезная и там если расковырять фулл структуру, не нужно будет сравнять по имени или сверять хеши что ты заранее сделаешь на компил-тайме название биндингов. Помимо всего остального там очень много другого полезного, что может очень сильно бустать, но это уже другая история.
Там мне бы хотелось чтото легкое, просто чтобы узнать является ли данная сущность героем или крипом. Я смотрел в джаваскриптовые, и там какая-то непонятная херня вызывается.
Ну да, я по твоему старому гайду делал так собственно.
Тогда уж так, если лень реверсить и думать. Выбери лучший хешер, что умеет в норм скорость и сиди сверяй.
(Или ебани сверку по TypeName vftable :), так же по компайл тайму хешеру, в общем способов куча, главное желание.)