キモブロ

Please spy check please, Fucking retard

TF2のメモリを楽に解析する方法

SourceMOD必須

IDAとかOllyDbgとかデバッガ使って調べようかなと思ってたら(VAC BANのリスクあり)、普通にsoucemodでそういう機能が提供されてたのでメモ。

以下のコマンドを実行することでメモリ上のオブジェクトの座標をdumpして簡単に調べることが出来る

sm_dump_netprops <file>

fileのところにはファイル名を指定する。たとえば

sm_dump_netprops "./dumped.txt"

みたいな感じにすると、tf/dumped.txt に出力される


これを表示するとだいたいこんな感じ

CAI_BaseNPC:
 Sub-Class Table (1 Deep): DT_AI_BaseNPC
  Sub-Class Table (2 Deep): DT_BaseCombatCharacter
   Sub-Class Table (3 Deep): DT_BaseFlex
    Sub-Class Table (4 Deep): DT_BaseAnimatingOverlay
     Sub-Class Table (5 Deep): DT_BaseAnimating
      Sub-Class Table (6 Deep): DT_BaseEntity
       Sub-Class Table (7 Deep): DT_AnimTimeMustBeFirst
       -Member: m_flAnimTime (offset 132) (type integer) (bits 8)
      -Member: m_flSimulationTime (offset 136) (type integer) (bits 8)
      -Member: m_vecOrigin (offset 780) (type vector) (bits 0)
      -Member: m_ubInterpolationFrame (offset 140) (type integer) (bits 2)
      -Member: m_nModelIndex (offset 114) (type integer) (bits 12)
       Sub-Class Table (7 Deep): DT_CollisionProperty
       -Member: m_vecMinsPreScaled (offset 8) (type vector) (bits 0)
       -Member: m_vecMaxsPreScaled (offset 20) (type vector) (bits 0)
       -Member: m_vecMins (offset 32) (type vector) (bits 0)
       -Member: m_vecMaxs (offset 44) (type vector) (bits 0)
       -Member: m_nSolidType (offset 65) (type integer) (bits 3)
       -Member: m_usSolidFlags (offset 60) (type integer) (bits 10)
       -Member: m_nSurroundType (offset 64) (type integer) (bits 3)
       -Member: m_triggerBloat (offset 66) (type integer) (bits 8)

クラス名とそのメンバ変数のメモリ上での座標が取得できる。これを利用してメモリ上のこれらの位置に値をセットすることでリアルタイムにゲーム世界に影響を与えることができる。