AlliedModders Donor
Join Date: Mar 2009
Location: pfnAddToFullPack
|
05-28-2013
, 09:30
Reverse Engineering from linux libraries
|
#1
|
What the hell, hello
I was looking around for a way to automatize extraction of symbols and types from .so files.
First I've tried a test version of IDA 6.4 and (with my besst cyber-hacker-friend Arkshine) we get the correct types from engine and cs.
What's next?
IDA 6.4 uses dwarf information to build types library.
So let's find some linux command line tool to do the job
First you will find dwarfdump. Put it on recycler-bin.
Then you can find dwarves. A set of tools to read dwarf information.
We use dwarves 1.10
Time for real examples
1- open linux terminal
2- go to your game folder:
PHP Code:
# cd /opt/games/cs16
3- get netadr_s struct
PHP Code:
# pahole engine_i486.so -C netadr_s struct netadr_s { netadrtype_t type; /* 0 4 */ unsigned char ip[4]; /* 4 4 */ unsigned char ipx[10]; /* 8 10 */ short unsigned int port; /* 18 2 */
/* size: 20, cachelines: 1, members: 4 */ /* last cacheline: 20 bytes */ };
4- Show me your happy face
5- Now it's time to have an orgasmic happyness
6- Get CBasePlayer from cs.so
PHP Code:
class CBasePlayer : public CBaseMonster { enum sbar_data { SBAR_ID_TARGETTYPE = 1, SBAR_ID_TARGETNAME = 2, SBAR_ID_TARGETHEALTH = 3, SBAR_END = 4, };
enum { MaxLocationLen = 32, };
enum MusicState { SILENT = 0, CALM = 1, INTENSE = 2, };
public:
/* class CBaseMonster <ancestor>; */ /* 0 0 */
/* XXX 404 bytes hole, try to pack */
/* --- cacheline 6 boundary (384 bytes) was 20 bytes ago --- */ int random_seed; /* 404 4 */ short unsigned int m_usPlayerBleed; /* 408 2 */
/* XXX 2 bytes hole, try to pack */
class EHANDLE m_hObserverTarget; /* 412 8 */ float m_flNextObserverInput; /* 420 4 */ int m_iObserverWeapon; /* 424 4 */ int m_iObserverC4State; /* 428 4 */ bool m_bObserverHasDefuser; /* 432 1 */
/* XXX 3 bytes hole, try to pack */
int m_iObserverLastMode; /* 436 4 */ float m_flFlinchTime; /* 440 4 */ float m_flAnimTime; /* 444 4 */ /* --- cacheline 7 boundary (448 bytes) --- */ bool m_bHighDamage; /* 448 1 */
/* XXX 3 bytes hole, try to pack */
float m_flVelocityModifier; /* 452 4 */ int m_iLastZoom; /* 456 4 */ bool m_bResumeZoom; /* 460 1 */
/* XXX 3 bytes hole, try to pack */
float m_flEjectBrass; /* 464 4 */ int m_iKevlar; /* 468 4 */ bool m_bNotKilled; /* 472 1 */
/* XXX 3 bytes hole, try to pack */
enum TeamName m_iTeam; /* 476 4 */ int m_iAccount; /* 480 4 */ bool m_bHasPrimary; /* 484 1 */
/* XXX 3 bytes hole, try to pack */
float m_flDeathThrowTime; /* 488 4 */ int m_iThrowDirection; /* 492 4 */ float m_flLastTalk; /* 496 4 */ bool m_bJustConnected; /* 500 1 */ bool m_bContextHelp; /* 501 1 */
/* XXX 2 bytes hole, try to pack */
enum JoinState m_iJoiningState; /* 504 4 */ class CBaseEntity * m_pIntroCamera; /* 508 4 */ /* --- cacheline 8 boundary (512 bytes) --- */ float m_fIntroCamTime; /* 512 4 */ float m_fLastMovement; /* 516 4 */ bool m_bMissionBriefing; /* 520 1 */ bool m_bTeamChanged; /* 521 1 */
/* XXX 2 bytes hole, try to pack */
enum ModelName m_iModelName; /* 524 4 */ int m_iTeamKills; /* 528 4 */ int m_iIgnoreGlobalChat; /* 532 4 */ bool m_bHasNightVision; /* 536 1 */ bool m_bNightVisionOn; /* 537 1 */
/* XXX 2 bytes hole, try to pack */
class Vector m_vRecentPath[20]; /* 540 240 */ /* --- cacheline 12 boundary (768 bytes) was 12 bytes ago --- */ float m_flIdleCheckTime; /* 780 4 */ float m_flRadioTime; /* 784 4 */ int m_iRadioMessages; /* 788 4 */ bool m_bIgnoreRadio; /* 792 1 */ bool m_bHasC4; /* 793 1 */ bool m_bHasDefuser; /* 794 1 */ bool m_bKilledByBomb; /* 795 1 */ class Vector m_vBlastVector; /* 796 12 */ bool m_bKilledByGrenade; /* 808 1 */
/* XXX 3 bytes hole, try to pack */
class CHintMessageQueue m_hintMessageQueue; /* 812 24 */ /* --- cacheline 13 boundary (832 bytes) was 4 bytes ago --- */ int32 m_flDisplayHistory; /* 836 4 */ enum _Menu m_iMenu; /* 840 4 */ int m_iChaseTarget; /* 844 4 */ class CBaseEntity * m_pChaseTarget; /* 848 4 */ float m_fCamSwitch; /* 852 4 */ bool m_bEscaped; /* 856 1 */ bool m_bIsVIP; /* 857 1 */
/* XXX 2 bytes hole, try to pack */
float m_tmNextRadarUpdate; /* 860 4 */ class Vector m_vLastOrigin; /* 864 12 */ int m_iCurrentKickVote; /* 876 4 */ float m_flNextVoteTime; /* 880 4 */ bool m_bJustKilledTeammate; /* 884 1 */
/* XXX 3 bytes hole, try to pack */
int m_iHostagesKilled; /* 888 4 */ int m_iMapVote; /* 892 4 */ /* --- cacheline 14 boundary (896 bytes) --- */ bool m_bCanShoot; /* 896 1 */
/* XXX 3 bytes hole, try to pack */
float m_flLastFired; /* 900 4 */ float m_flLastAttackedTeammate; /* 904 4 */ bool m_bHeadshotKilled; /* 908 1 */ bool m_bPunishedForTK; /* 909 1 */ bool m_bReceivesNoMoneyNextRound; /* 910 1 */
/* XXX 1 byte hole, try to pack */
int m_iTimeCheckAllowed; /* 912 4 */ bool m_bHasChangedName; /* 916 1 */ char m_szNewName[32]; /* 917 32 */ bool m_bIsDefusing; /* 949 1 */
/* XXX 2 bytes hole, try to pack */
float m_tmHandleSignals; /* 952 4 */ class CUnifiedSignals m_signals; /* 956 8 */ /* --- cacheline 15 boundary (960 bytes) was 4 bytes ago --- */ edict_t * m_pentCurBombTarget; /* 964 4 */ int m_iPlayerSound; /* 968 4 */ int m_iTargetVolume; /* 972 4 */ int m_iWeaponVolume; /* 976 4 */ int m_iExtraSoundTypes; /* 980 4 */ int m_iWeaponFlash; /* 984 4 */ float m_flStopExtraSoundTime; /* 988 4 */ float m_flFlashLightTime; /* 992 4 */ int m_iFlashBattery; /* 996 4 */ int m_afButtonLast; /* 1000 4 */ int m_afButtonPressed; /* 1004 4 */ int m_afButtonReleased; /* 1008 4 */ edict_t * m_pentSndLast; /* 1012 4 */ float m_flSndRoomtype; /* 1016 4 */ float m_flSndRange; /* 1020 4 */ /* --- cacheline 16 boundary (1024 bytes) --- */ float m_flFallVelocity; /* 1024 4 */ int m_rgItems[4]; /* 1028 16 */ int m_fNewAmmo; /* 1044 4 */ unsigned int m_afPhysicsFlags; /* 1048 4 */ float m_fNextSuicideTime; /* 1052 4 */ float m_flTimeStepSound; /* 1056 4 */ float m_flTimeWeaponIdle; /* 1060 4 */ float m_flSwimTime; /* 1064 4 */ float m_flDuckTime; /* 1068 4 */ float m_flWallJumpTime; /* 1072 4 */ float m_flSuitUpdate; /* 1076 4 */ int m_rgSuitPlayList[4]; /* 1080 16 */ /* --- cacheline 17 boundary (1088 bytes) was 8 bytes ago --- */ int m_iSuitPlayNext; /* 1096 4 */ int m_rgiSuitNoRepeat[32]; /* 1100 128 */ /* --- cacheline 19 boundary (1216 bytes) was 12 bytes ago --- */ float m_rgflSuitNoRepeatTime[32]; /* 1228 128 */ /* --- cacheline 21 boundary (1344 bytes) was 12 bytes ago --- */ int m_lastDamageAmount; /* 1356 4 */ float m_tbdPrev; /* 1360 4 */ float m_flgeigerRange; /* 1364 4 */ float m_flgeigerDelay; /* 1368 4 */ int m_igeigerRangePrev; /* 1372 4 */ int m_iStepLeft; /* 1376 4 */ char m_szTextureName[17]; /* 1380 17 */ char m_chTextureType; /* 1397 1 */
/* XXX 2 bytes hole, try to pack */
int m_idrowndmg; /* 1400 4 */ int m_idrownrestored; /* 1404 4 */ /* --- cacheline 22 boundary (1408 bytes) --- */ int m_bitsHUDDamage; /* 1408 4 */ BOOL m_fInitHUD; /* 1412 4 */ BOOL m_fGameHUDInitialized; /* 1416 4 */ int m_iTrain; /* 1420 4 */ BOOL m_fWeapon; /* 1424 4 */ class EHANDLE m_pTank; /* 1428 8 */ float m_fDeadTime; /* 1436 4 */ BOOL m_fNoPlayerSound; /* 1440 4 */ BOOL m_fLongJump; /* 1444 4 */ float m_tSneaking; /* 1448 4 */ int m_iUpdateTime; /* 1452 4 */ int m_iClientHealth; /* 1456 4 */ int m_iClientBattery; /* 1460 4 */ int m_iHideHUD; /* 1464 4 */ int m_iClientHideHUD; /* 1468 4 */ /* --- cacheline 23 boundary (1472 bytes) --- */ int m_iFOV; /* 1472 4 */ int m_iClientFOV; /* 1476 4 */ int m_iNumSpawns; /* 1480 4 */ class CBaseEntity * m_pObserver; /* 1484 4 */ class CBasePlayerItem * m_rgpPlayerItems[6]; /* 1488 24 */ class CBasePlayerItem * m_pActiveItem; /* 1512 4 */ class CBasePlayerItem * m_pClientActiveItem; /* 1516 4 */ class CBasePlayerItem * m_pLastItem; /* 1520 4 */ int m_rgAmmo[32]; /* 1524 128 */ /* --- cacheline 25 boundary (1600 bytes) was 52 bytes ago --- */ int m_rgAmmoLast[32]; /* 1652 128 */ /* --- cacheline 27 boundary (1728 bytes) was 52 bytes ago --- */ class Vector m_vecAutoAim; /* 1780 12 */ /* --- cacheline 28 boundary (1792 bytes) --- */ BOOL m_fOnTarget; /* 1792 4 */ int m_iDeaths; /* 1796 4 */ int m_izSBarState[4]; /* 1800 16 */ float m_flNextSBarUpdateTime; /* 1816 4 */ float m_flStatusBarDisappearDelay; /* 1820 4 */ char m_SbarString0[128]; /* 1824 128 */ /* --- cacheline 30 boundary (1920 bytes) was 32 bytes ago --- */ int m_lastx; /* 1952 4 */ int m_lasty; /* 1956 4 */ int m_nCustomSprayFrames; /* 1960 4 */ float m_flNextDecalTime; /* 1964 4 */ char m_szTeamName[16]; /* 1968 16 */ protected:
/* --- cacheline 31 boundary (1984 bytes) --- */ int m_modelIndexPlayer; /* 1984 4 */
/* Bitfield combined with previous fields */
TYPEDESCRIPTION m_playerSaveData[40]; /* 0 640 */
/* XXX 1348 bytes hole, try to pack */
/* --- cacheline 62 boundary (3968 bytes) was 8 bytes ago --- */ char m_szAnimExtention[32]; /* 1988 32 */ int m_iGaitsequence; /* 2020 4 */ float m_flGaitframe; /* 2024 4 */ float m_flGaityaw; /* 2028 4 */ class Vector m_prevgaitorigin; /* 2032 12 */ /* --- cacheline 63 boundary (4032 bytes) --- */ float m_flPitch; /* 2044 4 */ float m_flYaw; /* 2048 4 */ float m_flGaitMovement; /* 2052 4 */ int m_iAutoWepSwitch; /* 2056 4 */ bool m_bVGUIMenus; /* 2060 1 */ bool m_bShowHints; /* 2061 1 */ bool m_bShieldDrawn; /* 2062 1 */ bool m_bOwnsShield; /* 2063 1 */ bool m_bWasFollowing; /* 2064 1 */
/* XXX 3 bytes hole, try to pack */
float m_flNextFollowTime; /* 2068 4 */ float m_flYawModifier; /* 2072 4 */ float m_blindUntilTime; /* 2076 4 */ float m_blindStartTime; /* 2080 4 */ float m_blindHoldTime; /* 2084 4 */ float m_blindFadeTime; /* 2088 4 */ int m_blindAlpha; /* 2092 4 */ float m_allowAutoFollowTime; /* 2096 4 */ char m_autoBuyString[256]; /* 2100 256 */ /* --- cacheline 67 boundary (4288 bytes) was 56 bytes ago --- */ char * m_rebuyString; /* 2356 4 */ struct RebuyStruct m_rebuyStruct; /* 2360 40 */ /* --- cacheline 68 boundary (4352 bytes) was 36 bytes ago --- */ bool m_bIsInRebuy; /* 2400 1 */
/* XXX 3 bytes hole, try to pack */
float m_flLastUpdateTime; /* 2404 4 */ char m_lastLocation[32]; /* 2408 32 */ /* --- cacheline 69 boundary (4416 bytes) was 12 bytes ago --- */ float m_progressStart; /* 2440 4 */ float m_progressEnd; /* 2444 4 */ bool m_bObserverAutoDirector; /* 2448 1 */ bool m_canSwitchObserverModes; /* 2449 1 */
/* XXX 2 bytes hole, try to pack */
float m_heartBeatTime; /* 2452 4 */ float m_intenseTimestamp; /* 2456 4 */ float m_silentTimestamp; /* 2460 4 */ enum MusicState m_musicState; /* 2464 4 */ float m_flLastCommandTime[8]; /* 2468 32 */ void CBasePlayer(class CBasePlayer *, const class CBasePlayer &);
void CBasePlayer(class CBasePlayer *);
void SpawnClientSideCorpse(class CBasePlayer *); /* linkage=_ZN11CBasePlayer21SpawnClientSideCorpseEv */
void Observer_FindNextPlayer(class CBasePlayer *, bool, const char *); /* linkage=_ZN11CBasePlayer23Observer_FindNextPlayerEbPKc */
class CBaseEntity * Observer_IsValidTarget(class CBasePlayer *, int, bool); /* linkage=_ZN11CBasePlayer22Observer_IsValidTargetEib */
void Observer_HandleButtons(class CBasePlayer *); /* linkage=_ZN11CBasePlayer22Observer_HandleButtonsEv */
void Observer_SetMode(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer16Observer_SetModeEi */
void Observer_CheckTarget(class CBasePlayer *); /* linkage=_ZN11CBasePlayer20Observer_CheckTargetEv */
void Observer_CheckProperties(class CBasePlayer *); /* linkage=_ZN11CBasePlayer24Observer_CheckPropertiesEv */
int IsObserver(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10IsObserverEv */
void PlantC4(class CBasePlayer *); /* linkage=_ZN11CBasePlayer7PlantC4Ev */
void Radio(class CBasePlayer *, const char *, const char *, short int, bool); /* linkage=_ZN11CBasePlayer5RadioEPKcS1_sb */
class CBasePlayer * GetNextRadioRecipient(class CBasePlayer *, class CBasePlayer *); /* linkage=_ZN11CBasePlayer21GetNextRadioRecipientEPS_ */
void SmartRadio(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10SmartRadioEv */
void ThrowWeapon(class CBasePlayer *, char *); /* linkage=_ZN11CBasePlayer11ThrowWeaponEPc */
void ThrowPrimary(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12ThrowPrimaryEv */
void AddAccount(class CBasePlayer *, int, bool); /* linkage=_ZN11CBasePlayer10AddAccountEib */
void Disappear(class CBasePlayer *); /* linkage=_ZN11CBasePlayer9DisappearEv */
void MakeVIP(class CBasePlayer *); /* linkage=_ZN11CBasePlayer7MakeVIPEv */
bool CanPlayerBuy(class CBasePlayer *, bool); /* linkage=_ZN11CBasePlayer12CanPlayerBuyEb */
void SwitchTeam(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10SwitchTeamEv */
void TabulateAmmo(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12TabulateAmmoEv */
virtual void Spawn(class CBasePlayer *); /* linkage=_ZN11CBasePlayer5SpawnEv */
void Pain(class CBasePlayer *, int, bool); /* linkage=_ZN11CBasePlayer4PainEib */
virtual void Jump(class CBasePlayer *); /* linkage=_ZN11CBasePlayer4JumpEv */
virtual void Duck(class CBasePlayer *); /* linkage=_ZN11CBasePlayer4DuckEv */
virtual void PreThink(class CBasePlayer *); /* linkage=_ZN11CBasePlayer8PreThinkEv */
virtual void PostThink(class CBasePlayer *); /* linkage=_ZN11CBasePlayer9PostThinkEv */
virtual class Vector GetGunPosition(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14GetGunPositionEv */
virtual int TakeHealth(class CBasePlayer *, float, int); /* linkage=_ZN11CBasePlayer10TakeHealthEfi */
virtual void TraceAttack(class CBasePlayer *, entvars_t *, float, class Vector, TraceResult *, int); /* linkage=_ZN11CBasePlayer11TraceAttackEP9entvars_sf6VectorP11TraceResulti */
virtual int TakeDamage(class CBasePlayer *, entvars_t *, entvars_t *, float, int); /* linkage=_ZN11CBasePlayer10TakeDamageEP9entvars_sS1_fi */
virtual void Killed(class CBasePlayer *, entvars_t *, int); /* linkage=_ZN11CBasePlayer6KilledEP9entvars_si */
virtual class Vector BodyTarget(class CBasePlayer *, const class Vector &); /* linkage=_ZN11CBasePlayer10BodyTargetERK6Vector */
virtual void StartSneaking(class CBasePlayer *); /* linkage=_ZN11CBasePlayer13StartSneakingEv */
virtual void StopSneaking(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12StopSneakingEv */
virtual BOOL IsSneaking(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10IsSneakingEv */
virtual BOOL IsAlive(class CBasePlayer *); /* linkage=_ZN11CBasePlayer7IsAliveEv */
virtual BOOL ShouldFadeOnDeath(class CBasePlayer *); /* linkage=_ZN11CBasePlayer17ShouldFadeOnDeathEv */
virtual BOOL IsPlayer(class CBasePlayer *); /* linkage=_ZN11CBasePlayer8IsPlayerEv */
virtual BOOL IsBot(class CBasePlayer *); /* linkage=_ZN11CBasePlayer5IsBotEv */
BOOL IsBombGuy(class CBasePlayer *); /* linkage=_ZN11CBasePlayer9IsBombGuyEv */
bool IsLookingAtPosition(const class CBasePlayer *, const class Vector *, float); /* linkage=_ZNK11CBasePlayer19IsLookingAtPositionEPK6Vectorf */
virtual BOOL IsNetClient(class CBasePlayer *); /* linkage=_ZN11CBasePlayer11IsNetClientEv */
virtual const char * TeamID(class CBasePlayer *); /* linkage=_ZN11CBasePlayer6TeamIDEv */
virtual int Save(class CBasePlayer *, class CSave &); /* linkage=_ZN11CBasePlayer4SaveER5CSave */
virtual int Restore(class CBasePlayer *, class CRestore &); /* linkage=_ZN11CBasePlayer7RestoreER8CRestore */
void Reset(class CBasePlayer *); /* linkage=_ZN11CBasePlayer5ResetEv */
void SetScoreboardAttributes(class CBasePlayer *, class CBasePlayer *); /* linkage=_ZN11CBasePlayer23SetScoreboardAttributesEPS_ */
void RenewItems(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10RenewItemsEv */
void PackDeadPlayerItems(class CBasePlayer *); /* linkage=_ZN11CBasePlayer19PackDeadPlayerItemsEv */
void GiveDefaultItems(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16GiveDefaultItemsEv */
void RemoveAllItems(class CBasePlayer *, BOOL); /* linkage=_ZN11CBasePlayer14RemoveAllItemsEi */
void SetBombIcon(class CBasePlayer *, BOOL); /* linkage=_ZN11CBasePlayer11SetBombIconEi */
void SetProgressBarTime(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer18SetProgressBarTimeEi */
void SetProgressBarTime2(class CBasePlayer *, int, float); /* linkage=_ZN11CBasePlayer19SetProgressBarTime2Eif */
void SetPlayerModel(class CBasePlayer *, BOOL); /* linkage=_ZN11CBasePlayer14SetPlayerModelEi */
void SetNewPlayerModel(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer17SetNewPlayerModelEPKc */
BOOL SwitchWeapon(class CBasePlayer *, class CBasePlayerItem *); /* linkage=_ZN11CBasePlayer12SwitchWeaponEP15CBasePlayerItem */
void CheckPowerups(class CBasePlayer *, entvars_t *); /* linkage=_ZN11CBasePlayer13CheckPowerupsEP9entvars_s */
bool CanAffordPrimary(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16CanAffordPrimaryEv */
bool CanAffordPrimaryAmmo(class CBasePlayer *); /* linkage=_ZN11CBasePlayer20CanAffordPrimaryAmmoEv */
bool CanAffordSecondaryAmmo(class CBasePlayer *); /* linkage=_ZN11CBasePlayer22CanAffordSecondaryAmmoEv */
bool CanAffordArmor(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14CanAffordArmorEv */
bool CanAffordDefuseKit(class CBasePlayer *); /* linkage=_ZN11CBasePlayer18CanAffordDefuseKitEv */
bool CanAffordGrenade(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16CanAffordGrenadeEv */
bool NeedsPrimaryAmmo(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16NeedsPrimaryAmmoEv */
bool NeedsSecondaryAmmo(class CBasePlayer *); /* linkage=_ZN11CBasePlayer18NeedsSecondaryAmmoEv */
bool NeedsArmor(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10NeedsArmorEv */
bool NeedsDefuseKit(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14NeedsDefuseKitEv */
bool NeedsGrenade(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12NeedsGrenadeEv */
virtual void UpdateClientData(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16UpdateClientDataEv */
virtual int ObjectCaps(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10ObjectCapsEv */
virtual void Precache(class CBasePlayer *); /* linkage=_ZN11CBasePlayer8PrecacheEv */
BOOL IsOnLadder(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10IsOnLadderEv */
BOOL FlashlightIsOn(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14FlashlightIsOnEv */
void FlashlightTurnOn(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16FlashlightTurnOnEv */
void FlashlightTurnOff(class CBasePlayer *); /* linkage=_ZN11CBasePlayer17FlashlightTurnOffEv */
void UpdatePlayerSound(class CBasePlayer *); /* linkage=_ZN11CBasePlayer17UpdatePlayerSoundEv */
void DeathSound(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10DeathSoundEv */
virtual int Classify(class CBasePlayer *); /* linkage=_ZN11CBasePlayer8ClassifyEv */
void SetAnimation(class CBasePlayer *, PLAYER_ANIM); /* linkage=_ZN11CBasePlayer12SetAnimationE11PLAYER_ANIM */
void SetWeaponAnimType(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer17SetWeaponAnimTypeEPKc */
virtual void ImpulseCommands(class CBasePlayer *); /* linkage=_ZN11CBasePlayer15ImpulseCommandsEv */
void CheatImpulseCommands(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer20CheatImpulseCommandsEi */
virtual void RoundRespawn(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12RoundRespawnEv */
void StartDeathCam(class CBasePlayer *); /* linkage=_ZN11CBasePlayer13StartDeathCamEv */
void StartObserver(class CBasePlayer *, class Vector, class Vector); /* linkage=_ZN11CBasePlayer13StartObserverE6VectorS0_ */
virtual void AddPoints(class CBasePlayer *, int, BOOL); /* linkage=_ZN11CBasePlayer9AddPointsEii */
virtual void AddPointsToTeam(class CBasePlayer *, int, BOOL); /* linkage=_ZN11CBasePlayer15AddPointsToTeamEii */
void HandleSignals(class CBasePlayer *); /* linkage=_ZN11CBasePlayer13HandleSignalsEv */
virtual int AddPlayerItem(class CBasePlayer *, class CBasePlayerItem *); /* linkage=_ZN11CBasePlayer13AddPlayerItemEP15CBasePlayerItem */
virtual int RemovePlayerItem(class CBasePlayer *, class CBasePlayerItem *); /* linkage=_ZN11CBasePlayer16RemovePlayerItemEP15CBasePlayerItem */
void DropPlayerItem(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer14DropPlayerItemEPKc */
BOOL HasPlayerItem(class CBasePlayer *, class CBasePlayerItem *); /* linkage=_ZN11CBasePlayer13HasPlayerItemEP15CBasePlayerItem */
BOOL HasNamedPlayerItem(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer18HasNamedPlayerItemEPKc */
BOOL HasWeapons(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10HasWeaponsEv */
void SelectPrevItem(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer14SelectPrevItemEi */
void SelectNextItem(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer14SelectNextItemEi */
void SelectLastItem(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14SelectLastItemEv */
void SelectItem(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer10SelectItemEPKc */
void ItemPreFrame(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12ItemPreFrameEv */
void ItemPostFrame(class CBasePlayer *); /* linkage=_ZN11CBasePlayer13ItemPostFrameEv */
void GiveNamedItem(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer13GiveNamedItemEPKc */
void EnableControl(class CBasePlayer *, BOOL); /* linkage=_ZN11CBasePlayer13EnableControlEi */
virtual void ResetMaxSpeed(class CBasePlayer *); /* linkage=_ZN11CBasePlayer13ResetMaxSpeedEv */
bool HintMessage(class CBasePlayer *, const char *, BOOL, BOOL); /* linkage=_ZN11CBasePlayer11HintMessageEPKcii */
virtual int GiveAmmo(class CBasePlayer *, int, char *, int); /* linkage=_ZN11CBasePlayer8GiveAmmoEiPci */
void SendAmmoUpdate(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14SendAmmoUpdateEv */
void SendFOV(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer7SendFOVEi */
void WaterMove(class CBasePlayer *); /* linkage=_ZN11CBasePlayer9WaterMoveEv */
void PlayerDeathThink(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16PlayerDeathThinkEv */
void PlayerUse(class CBasePlayer *); /* linkage=_ZN11CBasePlayer9PlayerUseEv */
void HostageUsed(class CBasePlayer *); /* linkage=_ZN11CBasePlayer11HostageUsedEv */
void JoiningThink(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12JoiningThinkEv */
void RemoveLevelText(class CBasePlayer *); /* linkage=_ZN11CBasePlayer15RemoveLevelTextEv */
void MenuPrint(class CBasePlayer *, class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer9MenuPrintEPS_PKc */
void ResetMenu(class CBasePlayer *); /* linkage=_ZN11CBasePlayer9ResetMenuEv */
void SyncRoundTimer(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14SyncRoundTimerEv */
void CheckSuitUpdate(class CBasePlayer *); /* linkage=_ZN11CBasePlayer15CheckSuitUpdateEv */
void SetSuitUpdate(class CBasePlayer *, char *, int, int); /* linkage=_ZN11CBasePlayer13SetSuitUpdateEPcii */
void UpdateGeigerCounter(class CBasePlayer *); /* linkage=_ZN11CBasePlayer19UpdateGeigerCounterEv */
void CheckTimeBasedDamage(class CBasePlayer *); /* linkage=_ZN11CBasePlayer20CheckTimeBasedDamageEv */
virtual BOOL FBecomeProne(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12FBecomeProneEv */
void BarnacleVictimBitten(class CBasePlayer *, entvars_t *); /* linkage=_ZN11CBasePlayer20BarnacleVictimBittenEP9entvars_s */
void BarnacleVictimReleased(class CBasePlayer *); /* linkage=_ZN11CBasePlayer22BarnacleVictimReleasedEv */
int GetAmmoIndex(const char *); /* linkage=_ZN11CBasePlayer12GetAmmoIndexEPKc */
int AmmoInventory(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer13AmmoInventoryEi */
virtual int Illumination(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12IlluminationEv */
void ResetAutoaim(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12ResetAutoaimEv */
virtual class Vector GetAutoaimVector(class CBasePlayer *, float); /* linkage=_ZN11CBasePlayer16GetAutoaimVectorEf */
class Vector AutoaimDeflection(class CBasePlayer *, class Vector &, float, float); /* linkage=_ZN11CBasePlayer17AutoaimDeflectionER6Vectorff */
void ForceClientDllUpdate(class CBasePlayer *); /* linkage=_ZN11CBasePlayer20ForceClientDllUpdateEv */
void DeathMessage(class CBasePlayer *, entvars_t *); /* linkage=_ZN11CBasePlayer12DeathMessageEP9entvars_s */
void SetCustomDecalFrames(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer20SetCustomDecalFramesEi */
int GetCustomDecalFrames(class CBasePlayer *); /* linkage=_ZN11CBasePlayer20GetCustomDecalFramesEv */
void InitStatusBar(class CBasePlayer *); /* linkage=_ZN11CBasePlayer13InitStatusBarEv */
void UpdateStatusBar(class CBasePlayer *); /* linkage=_ZN11CBasePlayer15UpdateStatusBarEv */
void StudioEstimateGait(class CBasePlayer *); /* linkage=_ZN11CBasePlayer18StudioEstimateGaitEv */
void StudioPlayerBlend(class CBasePlayer *, int *, float *); /* linkage=_ZN11CBasePlayer17StudioPlayerBlendEPiPf */
void CalculatePitchBlend(class CBasePlayer *); /* linkage=_ZN11CBasePlayer19CalculatePitchBlendEv */
void CalculateYawBlend(class CBasePlayer *); /* linkage=_ZN11CBasePlayer17CalculateYawBlendEv */
void StudioProcessGait(class CBasePlayer *); /* linkage=_ZN11CBasePlayer17StudioProcessGaitEv */
void SendHostagePos(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14SendHostagePosEv */
void SendHostageIcons(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16SendHostageIconsEv */
void ResetStamina(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12ResetStaminaEv */
BOOL IsArmored(class CBasePlayer *, int); /* linkage=_ZN11CBasePlayer9IsArmoredEi */
BOOL ShouldDoLargeFlinch(class CBasePlayer *, int, int); /* linkage=_ZN11CBasePlayer19ShouldDoLargeFlinchEii */
void SetPrefsFromUserinfo(class CBasePlayer *, char *); /* linkage=_ZN11CBasePlayer20SetPrefsFromUserinfoEPc */
void SendWeatherInfo(class CBasePlayer *); /* linkage=_ZN11CBasePlayer15SendWeatherInfoEv */
void UpdateShieldCrosshair(class CBasePlayer *, bool); /* linkage=_ZN11CBasePlayer21UpdateShieldCrosshairEb */
bool HasShield(class CBasePlayer *); /* linkage=_ZN11CBasePlayer9HasShieldEv */
bool IsProtectedByShield(class CBasePlayer *); /* linkage=_ZN11CBasePlayer19IsProtectedByShieldEv */
void RemoveShield(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12RemoveShieldEv */
void DropShield(class CBasePlayer *, bool); /* linkage=_ZN11CBasePlayer10DropShieldEb */
void GiveShield(class CBasePlayer *, bool); /* linkage=_ZN11CBasePlayer10GiveShieldEb */
bool IsHittingShield(class CBasePlayer *, const class Vector &, TraceResult *); /* linkage=_ZN11CBasePlayer15IsHittingShieldERK6VectorP11TraceResult */
bool IsReloading(class CBasePlayer *); /* linkage=_ZN11CBasePlayer11IsReloadingEv */
bool IsBlind(const class CBasePlayer *); /* linkage=_ZNK11CBasePlayer7IsBlindEv */
virtual void Blind(class CBasePlayer *, float, float, float, int); /* linkage=_ZN11CBasePlayer5BlindEfffi */
virtual void OnTouchingWeapon(class CBasePlayer *, class CWeaponBox *); /* linkage=_ZN11CBasePlayer16OnTouchingWeaponEP10CWeaponBox */
bool IsAutoFollowAllowed(const class CBasePlayer *); /* linkage=_ZNK11CBasePlayer19IsAutoFollowAllowedEv */
void InhibitAutoFollow(class CBasePlayer *, float); /* linkage=_ZN11CBasePlayer17InhibitAutoFollowEf */
void AllowAutoFollow(class CBasePlayer *); /* linkage=_ZN11CBasePlayer15AllowAutoFollowEv */
void ClearAutoBuyData(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16ClearAutoBuyDataEv */
void AddAutoBuyData(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer14AddAutoBuyDataEPKc */
void AutoBuy(class CBasePlayer *); /* linkage=_ZN11CBasePlayer7AutoBuyEv */
void ClientCommand(class CBasePlayer *, const char *, const char *, const char *, const char *); /* linkage=_ZN11CBasePlayer13ClientCommandEPKcS1_S1_S1_ */
void PrioritizeAutoBuyString(class CBasePlayer *, char *, const char *); /* linkage=_ZN11CBasePlayer23PrioritizeAutoBuyStringEPcPKc */
const char * PickPrimaryCareerTaskWeapon(class CBasePlayer *); /* linkage=_ZN11CBasePlayer27PickPrimaryCareerTaskWeaponEv */
const char * PickSecondaryCareerTaskWeapon(class CBasePlayer *); /* linkage=_ZN11CBasePlayer29PickSecondaryCareerTaskWeaponEv */
const char * PickFlashKillWeaponString(class CBasePlayer *); /* linkage=_ZN11CBasePlayer25PickFlashKillWeaponStringEv */
const char * PickGrenadeKillWeaponString(class CBasePlayer *); /* linkage=_ZN11CBasePlayer27PickGrenadeKillWeaponStringEv */
bool ShouldExecuteAutoBuyCommand(class CBasePlayer *, const class AutoBuyInfoStruct *, bool, bool); /* linkage=_ZN11CBasePlayer27ShouldExecuteAutoBuyCommandEPK17AutoBuyInfoStructbb */
void PostAutoBuyCommandProcessing(class CBasePlayer *, const class AutoBuyInfoStruct *, bool &, bool &); /* linkage=_ZN11CBasePlayer28PostAutoBuyCommandProcessingEPK17AutoBuyInfoStructRbS3_ */
void ParseAutoBuyString(class CBasePlayer *, const char *, bool &, bool &); /* linkage=_ZN11CBasePlayer18ParseAutoBuyStringEPKcRbS2_ */
class AutoBuyInfoStruct * GetAutoBuyCommandInfo(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer21GetAutoBuyCommandInfoEPKc */
void InitRebuyData(class CBasePlayer *, const char *); /* linkage=_ZN11CBasePlayer13InitRebuyDataEPKc */
void BuildRebuyStruct(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16BuildRebuyStructEv */
void Rebuy(class CBasePlayer *); /* linkage=_ZN11CBasePlayer5RebuyEv */
void RebuyPrimaryWeapon(class CBasePlayer *); /* linkage=_ZN11CBasePlayer18RebuyPrimaryWeaponEv */
void RebuyPrimaryAmmo(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16RebuyPrimaryAmmoEv */
void RebuySecondaryWeapon(class CBasePlayer *); /* linkage=_ZN11CBasePlayer20RebuySecondaryWeaponEv */
void RebuySecondaryAmmo(class CBasePlayer *); /* linkage=_ZN11CBasePlayer18RebuySecondaryAmmoEv */
void RebuyHEGrenade(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14RebuyHEGrenadeEv */
void RebuyFlashbang(class CBasePlayer *); /* linkage=_ZN11CBasePlayer14RebuyFlashbangEv */
void RebuySmokeGrenade(class CBasePlayer *); /* linkage=_ZN11CBasePlayer17RebuySmokeGrenadeEv */
void RebuyDefuser(class CBasePlayer *); /* linkage=_ZN11CBasePlayer12RebuyDefuserEv */
void RebuyNightVision(class CBasePlayer *); /* linkage=_ZN11CBasePlayer16RebuyNightVisionEv */
void RebuyArmor(class CBasePlayer *); /* linkage=_ZN11CBasePlayer10RebuyArmorEv */
void UpdateLocation(class CBasePlayer *, bool); /* linkage=_ZN11CBasePlayer14UpdateLocationEb */
void SetObserverAutoDirector(class CBasePlayer *, bool); /* linkage=_ZN11CBasePlayer23SetObserverAutoDirectorEb */
bool IsObservingPlayer(class CBasePlayer *, class CBasePlayer *); /* linkage=_ZN11CBasePlayer17IsObservingPlayerEPS_ */
bool CanSwitchObserverModes(const class CBasePlayer *); /* linkage=_ZNK11CBasePlayer22CanSwitchObserverModesEv */
void Intense(class CBasePlayer *); /* linkage=_ZN11CBasePlayer7IntenseEv */
/* --- cacheline 77 boundary (4928 bytes) was 40 bytes ago --- */ /* vtable has 39 entries: { [0] = Spawn(_ZN11CBasePlayer5SpawnEv), [76] = Jump(_ZN11CBasePlayer4JumpEv), [77] = Duck(_ZN11CBasePlayer4DuckEv), [78] = PreThink(_ZN11CBasePlayer8PreThinkEv), [79] = PostThink(_ZN11CBasePlayer9PostThinkEv), [80] = GetGunPosition(_ZN11CBasePlayer14GetGunPositionEv), [13] = TakeHealth(_ZN11CBasePlayer10TakeHealthEfi), [11] = TraceAttack(_ZN11CBasePlayer11TraceAttackEP9entvars_sf6VectorP11TraceResulti), [12] = TakeDamage(_ZN11CBasePlayer10TakeDamageEP9entvars_sS1_fi), [14] = Killed(_ZN11CBasePlayer6KilledEP9entvars_si), [54] = BodyTarget(_ZN11CBasePlayer10BodyTargetERK6Vector), [31] = StartSneaking(_ZN11CBasePlayer13StartSneakingEv), [32] = StopSneaking(_ZN11CBasePlayer12StopSneakingEv), [34] = IsSneaking(_ZN11CBasePlayer10IsSneakingEv), [35] = IsAlive(_ZN11CBasePlayer7IsAliveEv), [66] = ShouldFadeOnDeath(_ZN11CBasePlayer17ShouldFadeOnDeathEv), [40] = IsPlayer(_ZN11CBasePlayer8IsPlayerEv), [81] = IsBot(_ZN11CBasePlayer5IsBotEv), [41] = IsNetClient(_ZN11CBasePlayer11IsNetClientEv), [42] = TeamID(_ZN11CBasePlayer6TeamIDEv), [4] = Save(_ZN11CBasePlayer4SaveER5CSave), [5] = Restore(_ZN11CBasePlayer7RestoreER8CRestore), [82] = UpdateClientData(_ZN11CBasePlayer16UpdateClientDataEv), [6] = ObjectCaps(_ZN11CBasePlayer10ObjectCapsEv), [1] = Precache(_ZN11CBasePlayer8PrecacheEv), [9] = Classify(_ZN11CBasePlayer8ClassifyEv), [83] = ImpulseCommands(_ZN11CBasePlayer15ImpulseCommandsEv), [84] = RoundRespawn(_ZN11CBasePlayer12RoundRespawnEv), [21] = AddPoints(_ZN11CBasePlayer9AddPointsEii), [22] = AddPointsToTeam(_ZN11CBasePlayer15AddPointsToTeamEii), [23] = AddPlayerItem(_ZN11CBasePlayer13AddPlayerItemEP15CBasePlayerItem), [24] = RemovePlayerItem(_ZN11CBasePlayer16RemovePlayerItemEP15CBasePlayerItem), [69] = ResetMaxSpeed(_ZN11CBasePlayer13ResetMaxSpeedEv), [25] = GiveAmmo(_ZN11CBasePlayer8GiveAmmoEiPci), [50] = FBecomeProne(_ZN11CBasePlayer12FBecomeProneEv), [55] = Illumination(_ZN11CBasePlayer12IlluminationEv), [85] = GetAutoaimVector(_ZN11CBasePlayer16GetAutoaimVectorEf), [86] = Blind(_ZN11CBasePlayer5BlindEfffi), [87] = OnTouchingWeapon(_ZN11CBasePlayer16OnTouchingWeaponEP10CWeaponBox), } */ /* size: 2500, cachelines: 40, members: 190 */ /* sum members: 3169, holes: 21, sum holes: 1799 */ /* last cacheline: 4 bytes */
/* BRAIN FART ALERT! 2500 != 3169 + 1799(holes), diff = -2468 */
};
7- Sure, I can see your face!
It's just an easy way. It's awesome.
Spread the word!
__________________
Last edited by joropito; 05-28-2013 at 10:13.
|
|