issuimo/UnityResolve.hpp

通过字段获取其属性中的字段

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⭐

在 C# 中尝试构造目标内存数据进行获取能正常获取,请问是我使用姿势问题吗?
0d1f830e20c61225bd7af244840e0d27