View Single Post
Spirit_12
Veteran Member
Join Date: Dec 2012
Location: Toronto, CA
Old 02-27-2016 , 17:45   Re: [IDA/DHooks]How to get vtable offsets
Reply With Quote #23

I'm trying to find the offset value for CTerrorGameRules::CalculateSurvivalMultiplier in L4D2, but failed every time. This is what I was able to extract from the vtable. Can anyone help me here?

PHP Code:
// Auto reconstructed from vtable block @ 0x00BB8BE0
// from "server_srv.so", by ida_vtables.idc
0    CGameRules::Name(void)
1    CMultiplayRules::Init(void)
2    CBaseGameSystemPerFrame::PostInit(void)
3    CBaseGameSystemPerFrame::Shutdown(void)
4    CTerrorGameRules::LevelInitPreEntity(void)
5    CTerrorGameRules::LevelInitPostEntity(void)
6    CBaseGameSystemPerFrame::LevelShutdownPreEntity(void)
7    CBaseGameSystemPerFrame::LevelShutdownPostEntity(void)
8    CBaseGameSystemPerFrame::OnSave(void)
9    CBaseGameSystemPerFrame::OnRestore(void)
10    CBaseGameSystemPerFrame::SafeRemoveIfDesired(void)
11    CBaseGameSystemPerFrame::IsPerFrame(void)
12    CTerrorGameRules::~CTerrorGameRules()
13    CTerrorGameRules::~CTerrorGameRules()
14    CBaseGameSystemPerFrame::FrameUpdatePreEntityThink(void)
15    CGameRules::FrameUpdatePostEntityThink(void)
16    CBaseGameSystemPerFrame::PreClientUpdate(void)
17    CMultiplayRules::Damage_IsTimeBased(int)
18    CMultiplayRules::Damage_ShouldGibCorpse(int)
19    CMultiplayRules::Damage_ShowOnHUD(int)
20    CMultiplayRules::Damage_NoPhysicsForce(int)
21    CMultiplayRules::Damage_ShouldNotBleed(int)
22    CTerrorGameRules::Damage_GetTimeBased(void)
23    CMultiplayRules::Damage_GetShouldGibCorpse(void)
24    CTerrorGameRules::Damage_GetShowOnHud(void)
25    CTerrorGameRules::Damage_GetNoPhysicsForce(void)
26    CMultiplayRules::Damage_GetShouldNotBleed(void)
27    CMultiplayRules::SwitchToNextBestWeapon(CBaseCombatCharacter *,CBaseCombatWeapon *)
28    CCSGameRules::GetNextBestWeapon(CBaseCombatCharacter *,CBaseCombatWeapon *)
29    CCSGameRules::ShouldCollide(int,int)
30    CCSGameRules::DefaultFOV(void)
31    CTerrorGameRules::GetViewVectors(void)const
32    CTerrorGameRules::GetAmmoDamage(CBaseEntity *,CBaseEntity *,int)
33    CGameRules::GetDamageMultiplier(void)
34    CMultiplayRules::IsMultiplayer(void)
35    CTerrorGameRules::GetEncryptionKey(void)
36    CTerrorGameRules::InRoundRestart(void)
37    CTerrorGameRules::CheckAchievementsEnabled(int)
38    CMultiplayRules::GetTaggedConVarList(KeyValues *)
39    CTerrorGameRules::OnBeginChangeLevel(char const*)
40    CCSGameRules::LevelShutdown(void)
41    CTeamplayRules::Precache(void)
42    CMultiplayRules::RefreshSkillData(bool)
43    CTerrorGameRules::Think(void)
44    CMultiplayRules::IsAllowedToSpawn(CBaseEntity *)
45    CCSGameRules::EndGameFrame(void)
46    CGameRules::IsSkillLevel(int)
47    CGameRules::GetSkillLevel(void)
48    CGameRules::OnSkillLevelChanged(int)
49    CGameRules::SetSkillLevel(int)
50    CMultiplayRules::FAllowFlashlight(void)
51    CTerrorGameRules::FShouldSwitchWeapon(CBasePlayer *,CBaseCombatWeapon *)
52    CMultiplayRules::IsDeathmatch(void)
53    CTeamplayRules::IsTeamplay(void)
54    CMultiplayRules::IsCoOp(void)
55    CTerrorGameRules::GetGameDescription(void)
56    CTerrorGameRules::ClientConnected(edict_t *,char const*,char const*,char *,int)
57    CTeamplayRules::InitHUD(CBasePlayer *)
58    CTerrorGameRules::ClientDisconnected(edict_t *)
59    CTerrorGameRules::FlPlayerFallDamage(CBasePlayer *)
60    CTeamplayRules::FPlayerCanTakeDamage(CBasePlayer *,CBaseEntity *)
61    CTeamplayRules::ShouldAutoAim(CBasePlayer *,edict_t *)
62    CGameRules::GetAutoAimScale(CBasePlayer *)
63    CTerrorGameRules::GetAutoAimMode(void)
64    CGameRules::ShouldUseRobustRadiusDamage(CBaseEntity *)
65    CCSGameRules::RadiusDamage(CTakeDamageInfo const&,Vector const&,float,int,CBaseEntity *)
66    CCSGameRules::FlPlayerFallDeathDoesScreenFade(CBasePlayer *)
67    CMultiplayRules::AllowDamage(CBaseEntity *,CTakeDamageInfo const&)
68    CTerrorGameRules::PlayerSpawn(CBasePlayer *)
69    CMultiplayRules::PlayerThink(CBasePlayer *)
70    CTerrorGameRules::FPlayerCanRespawn(CBasePlayer *)
71    CMultiplayRules::FlPlayerSpawnTime(CBasePlayer *)
72    CTerrorGameRules::GetPlayerSpawnSpot(CBasePlayer *)
73    CCSGameRules::IsSpawnPointValid(CBaseEntity *,CBasePlayer *)
74    CMultiplayRules::AllowAutoTargetCrosshair(void)
75    CCSGameRules::ClientCommand(CBaseEntity *,CCommand const&)
76    CTerrorGameRules::ClientSettingsChanged(CBasePlayer *)
77    CTeamplayRules::IPointsForKill(CBasePlayer *,CBasePlayer *)
78    CTerrorGameRules::PlayerKilled(CBasePlayer *,CTakeDamageInfo const&)
79    CCSGameRules::DeathNotice(CBasePlayer *,CTakeDamageInfo const&)
80    CGameRules::GetDamageCustomString(CTakeDamageInfo const&)
81    CGameRules::AdjustPlayerDamageInflicted(float)
82    CGameRules::AdjustPlayerDamageTaken(CTakeDamageInfo *)
83    CMultiplayRules::CanHavePlayerItem(CBasePlayer *,CBaseCombatWeapon *)
84    CMultiplayRules::WeaponShouldRespawn(CBaseCombatWeapon *)
85    CMultiplayRules::FlWeaponRespawnTime(CBaseCombatWeapon *)
86    CMultiplayRules::FlWeaponTryRespawn(CBaseCombatWeapon *)
87    CMultiplayRules::VecWeaponRespawnSpot(CBaseCombatWeapon *)
88    CMultiplayRules::CanHaveItem(CBasePlayer *,CItem *)
89    CMultiplayRules::PlayerGotItem(CBasePlayer *,CItem *)
90    CMultiplayRules::ItemShouldRespawn(CItem *)
91    CMultiplayRules::FlItemRespawnTime(CItem *)
92    CMultiplayRules::VecItemRespawnSpot(CItem *)
93    CMultiplayRules::VecItemRespawnAngles(CItem *)
94    CGameRules::CanHaveAmmo(CBaseCombatCharacter *,int)
95    CGameRules::CanHaveAmmo(CBaseCombatCharacter *,char const*)
96    CMultiplayRules::PlayerGotAmmo(CBaseCombatCharacter *,char *,int)
97    CGameRules::GetAmmoQuantityScale(int)
98    CCSGameRules::InitDefaultAIRelationships(void)
99    CCSGameRules::AIClassText(int)
100    CMultiplayRules::FlHealthChargerRechargeTime(void)
101    CMultiplayRules::FlHEVChargerRechargeTime(void)
102    CMultiplayRules::DeadPlayerWeapons(CBasePlayer *)
103    CMultiplayRules::DeadPlayerAmmo(CBasePlayer *)
104    CTeamplayRules::GetTeamID(CBaseEntity *)
105    CTeamplayRules::PlayerRelationship(CBaseEntity *,CBaseEntity *)
106    CTeamplayRules::PlayerCanHearChat(CBasePlayer *,CBasePlayer *)
107    CGameRules::CheckChatText(CBasePlayer *,char *)
108    CTeamplayRules::GetTeamIndex(char const*)
109    CTeamplayRules::GetIndexedTeamName(int)
110    CTeamplayRules::IsValidTeam(char const*)
111    CTeamplayRules::ChangePlayerTeam(CBasePlayer *,char const*,bool,bool)
112    CCSGameRules::SetDefaultPlayerTeam(CBasePlayer *)
113    CCSGameRules::UpdateClientData(CBasePlayer *)
114    CCSGameRules::PlayTextureSounds(void)
115    CMultiplayRules::PlayFootstepSounds(CBasePlayer *)
116    CGameRules::AllowSoundscapes(void)
117    CCSGameRules::FAllowNPCs(void)
118    CMultiplayRules::EndMultiplayerGame(void)
119    CTerrorGameRules::WeaponTraceEntity(CBaseEntity *,Vector const&,Vector const&,unsigned int,CGameTrace *)
120    CTerrorGameRules::InitScripts(void)
121    CTerrorGameRules::CreateStandardEntities(void)
122    CTerrorGameRules::GetChatPrefix(bool,CBasePlayer *)
123    CTerrorGameRules::GetChatLocation(bool,CBasePlayer *)
124    CTerrorGameRules::GetChatFormat(bool,CBasePlayer *)
125    CGameRules::ShouldBurningPropsEmitLight(void)
126    CGameRules::CanEntityBeUsePushed(CBaseEntity *)
127    CCSGameRules::CreateCustomNetworkStringTables(void)
128    CGameRules::MarkAchievement(IRecipientFilter &,char const*)
129    CMultiplayRules::ResetMapCycleTimeStamp(void)
130    CTerrorGameRules::UpdateGameplayStatsFromSteam(void)
131    CGameRules::DoFindClientInPVS(edict_t *,unsigned char *,unsigned int)
132    CGameRules::GetGameTypeName(void)
133    CGameRules::GetGameType(void)
134    CGameRules::ForceSplitScreenPlayersOnToSameTeam(void)
135    CGameRules::IsTopDown(void)
136    CGameRules::GetTopDownMovementAxis(void)
137    CTerrorGameRules::GetMaxHumanPlayers(void)const
138    CMultiplayRules::GetDeathScorer(CBaseEntity *,CBaseEntity *,CBaseEntity *)
139    CMultiplayRules::VoiceCommand(CBaseMultiplayerPlayer *,int,int)
140    CMultiplayRules::HandleTimeLimitChange(void)
141    CMultiplayRules::InitCustomResponseRulesDicts(void)
142    CMultiplayRules::ShutdownCustomResponseRulesDicts(void)
143    CMultiplayRules::UseSuicidePenalty(void)
144    CMultiplayRules::GetNextLevelName(char *,int,bool)
145    CMultiplayRules::ChangeLevel(void)
146    CCSGameRules::GoToIntermission(void)
147    CTeamplayRules::GetCaptureValueForPlayer(CBasePlayer *)
148    CTeamplayRules::TeamMayCapturePoint(int,int)
149    CTeamplayRules::PlayerMayCapturePoint(CBasePlayer *,int,char *,int)
150    CTeamplayRules::PlayerMayBlockPoint(CBasePlayer *,int,char *,int)
151    CTeamplayRules::PointsMayBeCaptured(void)
152    CTeamplayRules::SetLastCapPointChanged(int)
153    CTeamplayRules::TimerMayExpire(void)
154    CTeamplayRules::SetWinningTeam(int,int,bool,bool,bool)
155    CTeamplayRules::SetStalemate(int,bool,bool)
156    CTeamplayRules::SetSwitchTeams(bool)
157    CTeamplayRules::ShouldSwitchTeams(void)
158    CTeamplayRules::HandleSwitchTeams(void)
159    CTeamplayRules::SetScrambleTeams(bool)
160    CTeamplayRules::ShouldScrambleTeams(void)
161    CTeamplayRules::HandleScrambleTeams(void)
162    CTerrorGameRules::PlayersAllowedToAttack(void)const
163    CTerrorGameRules::GetBuyTimeLength(void)const
164    CTerrorGameRules::PopulateDeathEvent(IGameEvent *,CBaseEntity const*,CBaseCombatCharacter const*,CTakeDamageInfo const&)
165    CTerrorGameRules::DoesEntityBlockExplosions(CBaseEntity *)const
166    CCSGameRules::DeathNoticeForEntity(CBaseCombatCharacter *,CTakeDamageInfo const&)
167    CTerrorGameRules::CheckRoundTimeExpired(void)
168    CTerrorGameRules::CheckWinConditions(void)
169    CTerrorGameRules::TerminateRound(float,int)
170    CTerrorGameRules::TeamFull(int)
171    CCSGameRules::CheckGameOver(void)
172    CCSGameRules::CheckMaxRounds(void)
173    CCSGameRules::CheckWinLimit(void)
174    CCSGameRules::CheckFragLimit(void)
175    CTerrorGameRules::CheckRestartRound(void)
176    CTerrorGameRules::NeededPlayersCheck(bool &)
177    CCSGameRules::SetAllowWeaponSwitch(bool)
178    CCSGameRules::GetAllowWeaponSwitch(void)
179    CTerrorGameRules::RestartRound(void)
180    CTerrorGameRules::CleanUpMap(void)
181    CTerrorGameRules::PopulateDeathEvent(KeyValues *,CBaseEntity const*,CBaseCombatCharacter const*,CTakeDamageInfo const&)
182    CTerrorGameRules::TrackPlayerZombieDamage(CTerrorPlayer *,int,bool)
183    CTerrorGameRules::GetPlayerZombieDamage(ZombieClassType,bool)
184    CTerrorGameRules::ClearPlayerZombieDamage(void
Am I looking at the wrong table?
__________________
Spirit_12 is offline