通过字段获取其属性中的字段
Closed this issue · 0 comments
Kn0wns commented
// 静态字段 private static MiniMapEntityCtrl _entityCtrl;
UnityResolve::UnityType::Object *MiniMapEntityCtrl;
assembly->Get("UIMainBattleMiniMapCtrl")->Get<UnityResolve::Field>("_entityCtrl")->GetStaticValue(&MiniMapEntityCtrl);
if (!MiniMapEntityCtrl) {
LE("MiniMapEntityCtrl is null");
return miniIcons;
}
LD("MiniMapEntityCtrl %p", MiniMapEntityCtrl);
// 实例字段 private UIMiniMapIconCtrl miniMapIconCtrl; // 0x160;
// 获取偏移
auto miniMapIconCtrl_Field = assembly->Get("MiniMapEntityCtrl")->Get<UnityResolve::Field>("miniMapIconCtrl");
LD("miniMapIconCtrl_Field %#x", miniMapIconCtrl_Field ? miniMapIconCtrl_Field->offset : -1); // 能获取偏移值 0x160⭐
// 通过实例获取
auto bindingFlags = static_cast<int>(UnityResolve::UnityType::BindingFlags::NonPublic) | static_cast<int>(UnityResolve::UnityType::BindingFlags::Instance);
auto flags = static_cast<UnityResolve::UnityType::BindingFlags>(bindingFlags);
LD("miniMapIconCtrl_FieldInfo 1 %p", MiniMapEntityCtrl->GetType()->GetField("miniMapIconCtrl", flags)); // 无法获取值 0x0⭐