Вопрос Помощь найти в IDA

I love C++
Пользователь
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
218
Реакции[?]
46
Поинты[?]
1K
Здравствуйте, подскажите пожалуйста как найти виртуальную функцию Entity->GetEntityId();

C++:
class IEntity
{
public:
    // Оффсет верный на 12.09.2022
    EntityId GetEntityId() { return CallFunction<EntityId(__thiscall*)(PVOID)>(this, 0x8)(this); }
}
 
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
В каком смысле найти виртуальную функцию?
C++:
class IEntity {
public:
    virtual ~IEntity() = 0;//0
    virtual EntityId GetId() = 0;//1
    virtual void Function2() = 0;//2
    virtual void Function3() = 0;//3
    virtual void Function4() = 0;//4
    virtual void SetFlags(uint32 flags) = 0;//5
    virtual uint32 GetFlags() = 0;//6
    virtual void AddFlags(uint32 flagsToAdd) = 0;//7
    virtual void ClearFlags(uint32 flagsToClear) = 0;//8
    virtual bool CheckFlags(uint32 flagsToCheck) = 0;//9
    virtual bool IsGarbage() = 0;//10
    virtual void SetName(const char* sName) = 0;//11
    virtual const char* GetName() = 0;//12
    virtual const char* GetEntityTextDescription() = 0;//13
    virtual void Function14() = 0;//14
    virtual void AttachChild(IEntity* pChildEntity, int nAttachFlags = 0) = 0;//15
    virtual void DetachAll(int nDetachFlags = 0) = 0;//16
    virtual void DetachThis(int nDetachFlags = 0, int nWhyFlags = 0) = 0;//17
    virtual int  GetChildCount() = 0;//18
    virtual IEntity* GetChild(int nIndex) = 0;//19
    virtual IEntity* GetParent() = 0;//20
    virtual void SetWorldTM(const Matrix34& tm, int nWhyFlags = 0) = 0;//21
    virtual void SetLocalTM(const Matrix34& tm, int nWhyFlags = 0) = 0;//22
    virtual const Matrix34& GetWorldTM() = 0;//23
    virtual Matrix34 GetLocalTM() = 0;//24
    virtual void Function25() = 0;//25
    virtual void Function26() = 0;//26
    virtual void SetPos(const Vec3& vPos, int nWhyFlags = 0) = 0;//27
    virtual const Vec3& GetPos() = 0;//28
    virtual void SetRotation(const Quat& qRotation, int nWhyFlags = 0) = 0;//29
    virtual const Quat& GetRotation() = 0;//30
    virtual void SetScale(const Vec3& vScale, int nWhyFlags = 0) = 0;//31
    virtual const Vec3& GetScale() = 0;//32
    virtual void SetPosRotScale(const Vec3& vPos, const Quat& qRotation, const Vec3& vScale, int nWhyFlags = 0) = 0;//33
    virtual Vec3 GetWorldPos() = 0;//34
    virtual Quat GetWorldRotation() const = 0;//35
    virtual const Vec3& GetForwardDir() const = 0;//36
    virtual void Activate(bool bActive) = 0;//37
    virtual bool IsActive() const = 0;//38
    virtual void Function39() = 0;//39
    virtual void PrePhysicsActivate(bool bActive) = 0;//40
    virtual bool IsPrePhysicsActive() = 0;//41
    virtual void Function42() = 0;//42
    virtual void Function43() = 0;//43
    virtual void SetTimer(int nTimerId, int nMilliSeconds) = 0;//44
    virtual void KillTimer(int nTimerId) = 0;//45
    virtual void Hide(bool bHide) = 0;//46
    virtual bool IsHidden() = 0;//47
    virtual void Invisible(bool bInvisible) = 0;//48
    virtual bool IsInvisible() = 0;//49
    virtual void Function50() = 0;//50
    virtual void Function51() = 0;//51
    virtual void Function52() = 0;//52
    virtual bool isAiObject() = 0;//53
    virtual int GetAiObjectId() = 0;//54
    virtual void SetAiObjectId(int) = 0;//55
    virtual void Function56() = 0;//56
    virtual void Function57() = 0;//57
    virtual void Function58() = 0;//58
    virtual IEntityProxy* GetProxy(EEntityProxyFlags proxy) = 0;//59
    virtual void SetProxy(EEntityProxyFlags proxy, IEntityProxy* pProxy) = 0;//60
    virtual IEntityProxy* CreateProxy(EEntityProxyFlags proxy) = 0;//61
    virtual void Function62() = 0;//62
    virtual void Function63() = 0;//63
    virtual void Function64() = 0;//64
    virtual void UnphysicalizeSlot(int slot) = 0;//65
    virtual void UpdateSlotPhysics(int slot) = 0;//66
    virtual void Function67() = 0;//67
    virtual void Function68() = 0;//68
    virtual void Function69() = 0;//69
    virtual bool IsSlotValid(int nIndex) = 0;//70
    virtual void FreeSlot(int nIndex) = 0;//71
    virtual int GetSlotCount() = 0;//72
    virtual void Function73() = 0;//73
    virtual const Matrix34& GetSlotWorldTM(int nSlot) = 0;//74
    virtual const Matrix34& GetSlotLocalTM(int nSlot, bool bRelativeToParent) = 0;//75
    virtual void SetSlotLocalTM(int nSlot, const Matrix34& localTM, int nWhyFlags = 0) = 0;//76
    virtual void Function77() = 0;//77
    virtual void SetSlotFlags(int nSlot, uint32 nFlags) = 0;//78
    virtual uint32 GetSlotFlags(int nSlot) = 0;//79
    virtual bool ShouldUpdateCharacter(int nSlot) = 0;//80
    virtual void Function81() = 0;//81 return 0
    virtual int SetCharacter(ICharacterInstance* pCharacter, int nSlot) = 0;//82
    virtual ICharacterInstance* GetCharacter(int nSlot) = 0;// 83
    //"GetCharacter" -> open 1st sub_ func over it -> int(__fastcall *) spec func ptr of 2nd lodword mtd ftbop -> LODWORD(v7) = (*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v5 + 664i64))(v5, v3);
    virtual void Function84() = 0;//84
    virtual void Function85() = 0;//85
    virtual void Function86() = 0;//86
    //virtual IParticleEmitter* GetParticleEmitter(int nSlot) = 0;//86
    virtual void Function87(); //87
    virtual int LoadGeometry(int nSlot, const char* sFilename, const char* sGeomName = 0, int nLoadFlags = 0) = 0;//88
    virtual int LoadCharacter(int nSlot, const char* sFilename, int nLoadFlags = 0) = 0;//89
    virtual void Function90(); //90
    virtual void Function91(); //91
    virtual void Function92(); //92
    virtual int LoadCloud(int nSlot, const char* sCloudFilename) = 0;//93
    virtual void Function94(); //94
    virtual void InvalidateTM(int nWhyFlags = 0) = 0;//95
    virtual void EnablePhysics(bool enable) = 0;//96
    virtual void Function97(); //97
    virtual void Function98(); //98
    virtual void Function99(); //99
    virtual void RemoveAllEntityLinks() = 0;//100
    virtual IEntity* UnmapAttachedChild(int& partId) = 0;//101
    virtual bool IsInitialized() = 0;//102'
};
 
I love C++
Пользователь
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
218
Реакции[?]
46
Поинты[?]
1K
В каком смысле найти виртуальную функцию?
C++:
class IEntity {
public:
    virtual ~IEntity() = 0;//0
    virtual EntityId GetId() = 0;//1
    virtual void Function2() = 0;//2
    virtual void Function3() = 0;//3
    virtual void Function4() = 0;//4
    virtual void SetFlags(uint32 flags) = 0;//5
    virtual uint32 GetFlags() = 0;//6
    virtual void AddFlags(uint32 flagsToAdd) = 0;//7
    virtual void ClearFlags(uint32 flagsToClear) = 0;//8
    virtual bool CheckFlags(uint32 flagsToCheck) = 0;//9
    virtual bool IsGarbage() = 0;//10
    virtual void SetName(const char* sName) = 0;//11
    virtual const char* GetName() = 0;//12
    virtual const char* GetEntityTextDescription() = 0;//13
    virtual void Function14() = 0;//14
    virtual void AttachChild(IEntity* pChildEntity, int nAttachFlags = 0) = 0;//15
    virtual void DetachAll(int nDetachFlags = 0) = 0;//16
    virtual void DetachThis(int nDetachFlags = 0, int nWhyFlags = 0) = 0;//17
    virtual int  GetChildCount() = 0;//18
    virtual IEntity* GetChild(int nIndex) = 0;//19
    virtual IEntity* GetParent() = 0;//20
    virtual void SetWorldTM(const Matrix34& tm, int nWhyFlags = 0) = 0;//21
    virtual void SetLocalTM(const Matrix34& tm, int nWhyFlags = 0) = 0;//22
    virtual const Matrix34& GetWorldTM() = 0;//23
    virtual Matrix34 GetLocalTM() = 0;//24
    virtual void Function25() = 0;//25
    virtual void Function26() = 0;//26
    virtual void SetPos(const Vec3& vPos, int nWhyFlags = 0) = 0;//27
    virtual const Vec3& GetPos() = 0;//28
    virtual void SetRotation(const Quat& qRotation, int nWhyFlags = 0) = 0;//29
    virtual const Quat& GetRotation() = 0;//30
    virtual void SetScale(const Vec3& vScale, int nWhyFlags = 0) = 0;//31
    virtual const Vec3& GetScale() = 0;//32
    virtual void SetPosRotScale(const Vec3& vPos, const Quat& qRotation, const Vec3& vScale, int nWhyFlags = 0) = 0;//33
    virtual Vec3 GetWorldPos() = 0;//34
    virtual Quat GetWorldRotation() const = 0;//35
    virtual const Vec3& GetForwardDir() const = 0;//36
    virtual void Activate(bool bActive) = 0;//37
    virtual bool IsActive() const = 0;//38
    virtual void Function39() = 0;//39
    virtual void PrePhysicsActivate(bool bActive) = 0;//40
    virtual bool IsPrePhysicsActive() = 0;//41
    virtual void Function42() = 0;//42
    virtual void Function43() = 0;//43
    virtual void SetTimer(int nTimerId, int nMilliSeconds) = 0;//44
    virtual void KillTimer(int nTimerId) = 0;//45
    virtual void Hide(bool bHide) = 0;//46
    virtual bool IsHidden() = 0;//47
    virtual void Invisible(bool bInvisible) = 0;//48
    virtual bool IsInvisible() = 0;//49
    virtual void Function50() = 0;//50
    virtual void Function51() = 0;//51
    virtual void Function52() = 0;//52
    virtual bool isAiObject() = 0;//53
    virtual int GetAiObjectId() = 0;//54
    virtual void SetAiObjectId(int) = 0;//55
    virtual void Function56() = 0;//56
    virtual void Function57() = 0;//57
    virtual void Function58() = 0;//58
    virtual IEntityProxy* GetProxy(EEntityProxyFlags proxy) = 0;//59
    virtual void SetProxy(EEntityProxyFlags proxy, IEntityProxy* pProxy) = 0;//60
    virtual IEntityProxy* CreateProxy(EEntityProxyFlags proxy) = 0;//61
    virtual void Function62() = 0;//62
    virtual void Function63() = 0;//63
    virtual void Function64() = 0;//64
    virtual void UnphysicalizeSlot(int slot) = 0;//65
    virtual void UpdateSlotPhysics(int slot) = 0;//66
    virtual void Function67() = 0;//67
    virtual void Function68() = 0;//68
    virtual void Function69() = 0;//69
    virtual bool IsSlotValid(int nIndex) = 0;//70
    virtual void FreeSlot(int nIndex) = 0;//71
    virtual int GetSlotCount() = 0;//72
    virtual void Function73() = 0;//73
    virtual const Matrix34& GetSlotWorldTM(int nSlot) = 0;//74
    virtual const Matrix34& GetSlotLocalTM(int nSlot, bool bRelativeToParent) = 0;//75
    virtual void SetSlotLocalTM(int nSlot, const Matrix34& localTM, int nWhyFlags = 0) = 0;//76
    virtual void Function77() = 0;//77
    virtual void SetSlotFlags(int nSlot, uint32 nFlags) = 0;//78
    virtual uint32 GetSlotFlags(int nSlot) = 0;//79
    virtual bool ShouldUpdateCharacter(int nSlot) = 0;//80
    virtual void Function81() = 0;//81 return 0
    virtual int SetCharacter(ICharacterInstance* pCharacter, int nSlot) = 0;//82
    virtual ICharacterInstance* GetCharacter(int nSlot) = 0;// 83
    //"GetCharacter" -> open 1st sub_ func over it -> int(__fastcall *) spec func ptr of 2nd lodword mtd ftbop -> LODWORD(v7) = (*(int (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v5 + 664i64))(v5, v3);
    virtual void Function84() = 0;//84
    virtual void Function85() = 0;//85
    virtual void Function86() = 0;//86
    //virtual IParticleEmitter* GetParticleEmitter(int nSlot) = 0;//86
    virtual void Function87(); //87
    virtual int LoadGeometry(int nSlot, const char* sFilename, const char* sGeomName = 0, int nLoadFlags = 0) = 0;//88
    virtual int LoadCharacter(int nSlot, const char* sFilename, int nLoadFlags = 0) = 0;//89
    virtual void Function90(); //90
    virtual void Function91(); //91
    virtual void Function92(); //92
    virtual int LoadCloud(int nSlot, const char* sCloudFilename) = 0;//93
    virtual void Function94(); //94
    virtual void InvalidateTM(int nWhyFlags = 0) = 0;//95
    virtual void EnablePhysics(bool enable) = 0;//96
    virtual void Function97(); //97
    virtual void Function98(); //98
    virtual void Function99(); //99
    virtual void RemoveAllEntityLinks() = 0;//100
    virtual IEntity* UnmapAttachedChild(int& partId) = 0;//101
    virtual bool IsInitialized() = 0;//102'
};
Как найти смещение GetEntityId в IDA'е
Вы сами реверсили эти функции?
 
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
Как найти смещение GetEntityId в IDA'е
Вы сами реверсили эти функции?
Так ты просил виртуальной функцией, ведь можно обойтись без смещений, если использовать их.
 
VirtualAllocEx
Пользователь
Статус
Оффлайн
Регистрация
30 Дек 2021
Сообщения
358
Реакции[?]
83
Поинты[?]
5K
Здравствуйте, подскажите пожалуйста как найти виртуальную функцию Entity->GetEntityId();

C++:
class IEntity
{
public:
    // Оффсет верный на 12.09.2022
    EntityId GetEntityId() { return CallFunction<EntityId(__thiscall*)(PVOID)>(this, 0x8)(this); }
}
Попробуй 0x10 или 0x18, мне лень сейчас обновлять игру и чекать. И ты точно уверен, что он изменился? Сколько времени не менялся, а тут вдруг изменился
 
I love C++
Пользователь
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
218
Реакции[?]
46
Поинты[?]
1K
Так ты просил виртуальной функцией, ведь можно обойтись без смещений, если использовать их.
Можешь показать как ты их находишь?
Попробуй 0x10 или 0x18, мне лень сейчас обновлять игру и чекать. И ты точно уверен, что он изменился? Сколько времени не менялся, а тут вдруг изменился
Он не менялся, мне интересно как его можно найти, а так-же подобные смещения или виртуальные функции
 
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
Можешь показать как ты их находишь?

Он не менялся, мне интересно как его можно найти, а так-же подобные смещения или виртуальные функции
Скриншот 12-09-2022 120138.jpg
Найти смещение можно например по строке ACT_ENTERVEHICLE. А виртуальные функции из движка игры берут, также как и строки для поиска самих смещений
 
I love C++
Пользователь
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
218
Реакции[?]
46
Поинты[?]
1K
Посмотреть вложение 220714
Найти смещение можно например по строке ACT_ENTERVEHICLE. А виртуальные функции из движка игры берут, также как и строки для поиска самих смещений
Ну и строка для поиска конечно, я использовал GetEntityId, а на счет виртуальных функций то движок вы имеете ввиду CryEngine SDK?
 
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
Ну и строка для поиска конечно, я использовал GetEntityId, а на счет виртуальных функций то движок вы имеете ввиду CryEngine SDK?
А там есть смещение нужное? я вроде смотрел и не увидел. Да CryEngine
 
I love C++
Пользователь
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
218
Реакции[?]
46
Поинты[?]
1K
А там есть смещение нужное? я вроде смотрел и не увидел. Да CryEngine
Нету там смещения нужного, можете кинуть ссылку на такое чудо?
Ещё хотел спросить на счёт virtual function, как узнать номер функции(если не сложно скринами показать как вы находите её)
 
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
Нету там смещения нужного, можете кинуть ссылку на такое чудо?
Ещё хотел спросить на счёт virtual function, как узнать номер функции(если не сложно скринами показать как вы находите её)
Пожалуйста, авторизуйтесь для просмотра ссылки.

А насчет номеров функций, откроешь движок и поймешь, но иногда может не совпадать
 
I love C++
Пользователь
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
218
Реакции[?]
46
Поинты[?]
1K
Пожалуйста, авторизуйтесь для просмотра ссылки.

А насчет номеров функций, откроешь движок и поймешь, но иногда может не совпадать
То что совпадать некоторые не будут то я понимаю, вот и решил что лучше спрошу. Спасибо большое
 
Сверху Снизу