7c4048690b
CHLTVServer::StartRecording is called directly in tv_record on linux, ignoring the vtable. Add a detour on linux for these two functions, so we always notice when recording starts. Windows actually always uses the vtable to get the function address, so we don't need to detour anything on windows.
270 lines
4.7 KiB
Plaintext
270 lines
4.7 KiB
Plaintext
"Games"
|
|
{
|
|
"csgo"
|
|
{
|
|
"Addresses"
|
|
{
|
|
"host_client"
|
|
{
|
|
"windows"
|
|
{
|
|
"signature" "host_client"
|
|
"read" "58"
|
|
}
|
|
"linux"
|
|
{
|
|
"signature" "host_client"
|
|
}
|
|
}
|
|
|
|
"CHLTVServer::m_DemoRecorder"
|
|
{
|
|
"windows"
|
|
{
|
|
"signature" "CHLTVServer::GetRecordingDemoFilename"
|
|
"read" "2"
|
|
}
|
|
"linux"
|
|
{
|
|
"signature" "CHLTVServer::GetRecordingDemoFilename"
|
|
"read" "10"
|
|
}
|
|
}
|
|
}
|
|
"Offsets"
|
|
{
|
|
"CBaseServer::BroadcastPrintf"
|
|
{
|
|
"windows" "39"
|
|
"linux" "40"
|
|
}
|
|
|
|
"CHLTVServer::ConnectClient"
|
|
{
|
|
"windows" "54"
|
|
"linux" "55"
|
|
}
|
|
|
|
"CHLTVServer::RejectConnection"
|
|
{
|
|
"windows" "52"
|
|
"linux" "53"
|
|
}
|
|
|
|
"CHLTVServer::GetChallengeType"
|
|
{
|
|
"windows" "59"
|
|
"linux" "60"
|
|
}
|
|
|
|
"CBaseClient::ActivatePlayer"
|
|
{
|
|
"windows" "27"
|
|
"linux" "65"
|
|
}
|
|
|
|
"CHLTVServer::Shutdown"
|
|
{
|
|
"windows" "45"
|
|
"linux" "46"
|
|
}
|
|
|
|
"CHLTVDirector::m_iPVSEntity"
|
|
{
|
|
"windows" "32"
|
|
"linux" "32"
|
|
}
|
|
|
|
"CHLTVDirector::m_vPVSOrigin"
|
|
{
|
|
"windows" "36"
|
|
"linux" "36"
|
|
}
|
|
|
|
"CHLTVDirector::m_nNextShotTick"
|
|
{
|
|
"windows" "52"
|
|
"linux" "52"
|
|
}
|
|
}
|
|
"Signatures"
|
|
{
|
|
"host_client"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@host_client"
|
|
// ping(CCommand const&) "Client ping times:\n"
|
|
"windows" "\x55\x8B\xEC\x83\xE4\xC0\x83\xEC\x34\x83\x3D\x2A\x2A\x2A\x2A\x01\x53\x56\x57\x75\x2A"
|
|
}
|
|
|
|
"CHLTVServer::BroadcastEventLocal"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@_ZN11CHLTVServer19BroadcastEventLocalEP10IGameEventb"
|
|
// "SourceTV broadcast local event: %s\n"
|
|
"windows" "\x55\x8B\xEC\x83\xEC\x4C\x53\x8B\xD9\xC7\x45\xB4\x2A\x2A\x2A\x2A\x56\x8D"
|
|
}
|
|
|
|
"CHLTVServer::GetRecordingDemoFilename"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@_ZN11CHLTVServer24GetRecordingDemoFilenameEv"
|
|
"windows" "\x81\xC1\x2A\x2A\x2A\x2A\x8B\x01\xFF\x20"
|
|
}
|
|
|
|
// StartRecording and StopRecording are virtual, but get called directly in the linux binary..
|
|
// Need to add a detour.
|
|
"CHLTVDemoRecorder::StartRecording"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@_ZN17CHLTVDemoRecorder14StartRecordingEPKcb"
|
|
}
|
|
|
|
"CHLTVDemoRecorder::StopRecording"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@_ZN17CHLTVDemoRecorder13StopRecordingEPK9CGameInfo"
|
|
}
|
|
}
|
|
}
|
|
"cstrike"
|
|
{
|
|
"Addresses"
|
|
{
|
|
"host_client"
|
|
{
|
|
"windows"
|
|
{
|
|
"signature" "host_client"
|
|
"read" "92"
|
|
}
|
|
"linux"
|
|
{
|
|
"signature" "host_client"
|
|
}
|
|
}
|
|
|
|
"CHLTVServer::m_DemoRecorder"
|
|
{
|
|
"windows"
|
|
{
|
|
"signature" "CHLTVServer::Shutdown"
|
|
"read" "5"
|
|
}
|
|
"linux"
|
|
{
|
|
"signature" "CHLTVServer::Shutdown"
|
|
"read" "12"
|
|
}
|
|
}
|
|
}
|
|
"Offsets"
|
|
{
|
|
"CNetChan::SendNetMsg"
|
|
{
|
|
"windows" "40"
|
|
"linux" "41"
|
|
}
|
|
|
|
"CBaseClient::m_NetChannel"
|
|
{
|
|
"windows" "192"
|
|
"linux" "164"
|
|
}
|
|
|
|
"CBaseServer::BroadcastPrintf"
|
|
{
|
|
"windows" "35"
|
|
"linux" "36"
|
|
}
|
|
|
|
"CHLTVServer::ConnectClient"
|
|
{
|
|
"windows" "49"
|
|
"linux" "50"
|
|
}
|
|
|
|
"CHLTVServer::RejectConnection"
|
|
{
|
|
"windows" "47"
|
|
"linux" "48"
|
|
}
|
|
|
|
"CHLTVServer::GetChallengeType"
|
|
{
|
|
"windows" "54"
|
|
"linux" "55"
|
|
}
|
|
|
|
"CBaseClient::ActivatePlayer"
|
|
{
|
|
"windows" "16"
|
|
"linux" "56"
|
|
}
|
|
|
|
"CHLTVServer::Shutdown"
|
|
{
|
|
"windows" "41"
|
|
"linux" "42"
|
|
}
|
|
|
|
"CHLTVDirector::m_iPVSEntity"
|
|
{
|
|
"windows" "16"
|
|
"linux" "16"
|
|
}
|
|
|
|
"CHLTVDirector::m_vPVSOrigin"
|
|
{
|
|
"windows" "20"
|
|
"linux" "20"
|
|
}
|
|
|
|
"CHLTVDirector::m_nNextShotTick"
|
|
{
|
|
"windows" "40"
|
|
"linux" "40"
|
|
}
|
|
}
|
|
"Signatures"
|
|
{
|
|
"host_client"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@host_client"
|
|
// ping(CCommand const&) "Client ping times:\n"
|
|
"windows" "\x55\x8B\xEC\x51\x83\x3D\x2A\x2A\x2A\x2A\x01\x75\x2A"
|
|
}
|
|
|
|
"CHLTVServer::BroadcastEventLocal"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@_ZN11CHLTVServer19BroadcastEventLocalEP10IGameEventb"
|
|
// "SourceTV broadcast local event: %s\n"
|
|
"windows" "\x55\x8B\xEC\x81\xEC\x44\x04\x00\x00\x53"
|
|
}
|
|
|
|
"CHLTVServer::Shutdown"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@_ZN11CHLTVServer8ShutdownEv"
|
|
// "HLTV server shutting down"
|
|
"windows" "\x56\x8B\xF1\x8B\x86\x2A\x2A\x2A\x2A\x8D\x8E\x2A\x2A\x2A\x2A\xFF\x50\x2A\x8B\x86\x2A\x2A\x2A\x2A\x8D\x8E"
|
|
}
|
|
|
|
// StartRecording and StopRecording are virtual, but get called directly in the linux binary..
|
|
// Need to add a detour.
|
|
"CHLTVDemoRecorder::StartRecording"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@_ZN17CHLTVDemoRecorder14StartRecordingEPKcb"
|
|
}
|
|
|
|
"CHLTVDemoRecorder::StopRecording"
|
|
{
|
|
"library" "engine"
|
|
"linux" "@_ZN17CHLTVDemoRecorder13StopRecordingEv"
|
|
}
|
|
}
|
|
}
|
|
} |