• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Encrypt

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Ноя 2022
Сообщения
132
Реакции
3
namespace FieldHelper {

inline uint32_t GetEncryptedFieldAddrByFirstObjectDataType(const char* TypeClass, const wchar_t* DataType, int skipType = 0, bool checkAttr = false, Unity::FieldAttributes TargetAttr = Unity::FieldAttributes::PrivateScope) {

int Counter = 0;

auto type = (Unity::Type*)il2cpp::TypeGetObject(_(""), TypeClass);
if (!MemUtils::IsValidCheck(type))
return 0;

Unity::BindingFlags flags = Unity::BindingFlags::Public | Unity::BindingFlags::NonPublic | Unity::BindingFlags::Instance | Unity::BindingFlags::Static;
auto fields = type->GetFields(flags);
if (!MemUtils::IsValidCheck(fields))
return 0;

for (int i = 0; i < fields->GetSize(); i++) {

auto field = fields->Get(i);
if (!MemUtils::IsValidCheck(field))
continue;

auto fieldType = field->get_FieldType();
if (!MemUtils::IsValidCheck(fieldType))
continue;

auto attr = field->get_Attributes();
if (checkAttr && attr != TargetAttr)
continue;

auto addr = field->GetFieldOffset() + 0x10;
auto className = fieldType->get_FullNameOrDefault();
if (className->Contains(DataType)) {
if (Counter >= skipType)
return addr;
else Counter++;
}

}

return 0;
}

inline uintptr_t GetDecryptedFieldInsideObject(Unity::Component* component, const wchar_t* FieldClass) {

if (!MemUtils::IsValidCheck(component))
return 0;

auto components = component->GetComponentsInChildren((Unity::Type*)il2cpp::TypeGetObject(_("UnityEngine"), _("Component")));
if (!MemUtils::IsValidCheck(components))
return 0;

for (int i = 0; i < components->GetSize(); i++) {

auto obj = components->Get(i);
if (!MemUtils::IsValidCheck((void*)obj))
continue;

auto type = Unity::Object::GetType(obj);
if (!MemUtils::IsValidCheck(type))
continue;

auto className = type->get_FullNameOrDefault();
if (className->Contains(FieldClass))
return obj;

}

return 0;
}




inline const wchar_t* FindEncryptedClassNameByFirstObjectDataType(const char* TypeClass, const wchar_t* DataType, int skipType = 0, bool checkAttr = false, Unity::FieldAttributes TargetAttr = Unity::FieldAttributes::PrivateScope) {

int Counter = 0;

auto type = (Unity::Type*)il2cpp::TypeGetObject(_(""), TypeClass);
if (!MemUtils::IsValidCheck(type))
return _(L"");

Unity::BindingFlags flags = Unity::BindingFlags::Public | Unity::BindingFlags::NonPublic | Unity::BindingFlags::Instance | Unity::BindingFlags::Static;
auto fields = type->GetFields(flags);
if (!MemUtils::IsValidCheck(fields))
return _(L"");

for (int i = 0; i < fields->GetSize(); i++) {

auto field = fields->Get(i);
if (!MemUtils::IsValidCheck(field))
continue;

auto fieldType = field->get_FieldType();
if (!MemUtils::IsValidCheck(fieldType))
continue;

auto attr = field->get_Attributes();
if (checkAttr && attr != TargetAttr)
continue;

auto addr = field->GetFieldOffset() + 0x10;
auto className = fieldType->get_FullNameOrDefault();
if (className->Contains(DataType)) {
if (Counter >= skipType)
return className->str;
else Counter++;
}

}

return _(L"");
}

} вот код encrypt (engine.h)
playerNames = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(_("BasePlayer"), _(L"System.String"), 0, true, Unity::FieldAttributes::Family);
playerFlags = il2cpp::GetOffset(_("BasePlayer"), _("playerFlags"));
model = il2cpp::GetOffset(_("BaseEntity"), _("model"));
boneTransforms = il2cpp::GetOffset(_("Model"), _("boneTransforms"));
ItemContainer = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(_("PlayerInventory"), _(L"%"), 0, true, Unity::FieldAttributes::Public);
ItemContainer2 = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(_("PlayerInventory"), _(L"%"), 1, true, Unity::FieldAttributes::Public);
ItemContainer3 = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(_("PlayerInventory"), _(L"%"), 2, true, Unity::FieldAttributes::Public);

char buffer[128];
auto ItemContainerClass = wcharToChar(FieldHelper::FindEncryptedClassNameByFirstObjectDataType(_("PlayerInventory"), _(L"%"), 0, true, Unity::FieldAttributes::Public), buffer, sizeof(buffer));
ItemList = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(ItemContainerClass, _(L"List"), 0, true, Unity::FieldAttributes::Public);

auto ItemClass = wcharToChar(FieldHelper::FindEncryptedClassNameByFirstObjectDataType(ItemContainerClass, _(L"List"), 0, true, Unity::FieldAttributes::Public), buffer, sizeof(buffer));
ItemClass = RebuildChar(ItemClass, FindCharPos(ItemClass, '%'), FindCharPos(ItemClass, ','), buffer, sizeof(buffer));

itemInfo = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(ItemClass, _(L"ItemDefinition"));
shortname = il2cpp::GetOffset(_("ItemDefinition"), _("shortname"));

playerModel = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(_("BasePlayer"), _(L"PlayerModel"));
movement = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(_("BasePlayer"), _(L"BaseMovement"));
groundAngleNew = FieldHelper::GetEncryptedFieldAddrByFirstObjectDataType(_("PlayerWalkMovement"), _(L"PlayerWalkMovement"), 2); (dump.cpp)
if (DrawName) {
//if (isCorpse) {
// GetSwprintf(buff, _(L"Corpse [%dm]"), int(dist));
//}
// else {
auto playerName = Player->GetName();
GetSwprintf(buff, _(L"%s [%dm]"), playerName, int(dist));
// }
DrawString({ leftSide + (box_width / 2.f) - 100.f, bounds.top - 20.f, 200, 30 }, buff, { 255,255,255,255 }, true);
}

float offset = 1.f;
auto itemList = Player->GetInventory()->GetContainer(0)->itemList();
if (DrawPlayerWeapons) {
for (int i = 0; i < itemList->GetSize(); i++) {
auto item = itemList->GetValue(i);
if (!MemUtils::IsValidCheck(item))
continue;

auto name = item->itemInfo()->shortName();
DrawString({ leftSide + (box_width / 2.f) - 50.f, bounds.bottom - 10.f + offset, 100, 30 }, name, { 255,255,255,255 }, true);
offset += 5.f;
}
} (Func.cpp)
почему у меня не отображается оружие (как пофиксить encrypt)
 
ты можешь использовать get_component ( через game_object ), для получения энкриптнутых классов без декрипта ( PlayerInventory / PlayerEyes / ... )
 
ты можешь использовать get_component ( через game_object ), для получения энкриптнутых классов без декрипта ( PlayerInventory / PlayerEyes / ... )
вот так?

auto components = component->GetComponentsInChildren((Unity::Type*)il2cpp::TypeGetObject(_("UnityEngine"), _("Component")));
if (!MemUtils::IsValidCheck(components))
return 0;

for (int i = 0; i < components->GetSize(); i++) {

auto obj = components->Get(i);
if (!MemUtils::IsValidCheck((void*)obj))
continue;

auto type = Unity::Object::GetType(obj);
if (!MemUtils::IsValidCheck(type))
continue;

auto className = type->get_FullNameOrDefault();
if (className->Contains(FieldClass))
return obj;
я прост недавно начал делать чит и особо не ебу что и как
 
нет,
(player + 0x10 + 0x30) -> get_component( )
 
auto eyes = GetComponentObject((UINT64)LocalPlayer, il2cpp::type_object("", _("PlayerEyes"))); //O::UnityEngine_Component::GetComponent


player_inventory_t get_inventory() {
auto inventory = m_internal.m_cachedPtr.get().game_object.get().get_component_fast<player_inventory_t>(player_inventory::class_name);
return inventory.data;
}
 
Назад
Сверху Снизу