From e6fde4904cc280c06dd91c501e62894dc66239f0 Mon Sep 17 00:00:00 2001 From: a2x <45197573+a2x@users.noreply.github.com> Date: Sat, 29 Jun 2024 09:59:06 +1000 Subject: [PATCH] Output RVA instead of absolute offset for some fields --- output/offsets.cs | 11 +++++++---- output/offsets.hpp | 11 +++++++---- output/offsets.json | 8 +++++--- output/offsets.rs | 11 +++++++---- src/analysis/offsets.rs | 15 ++++++++------- 5 files changed, 34 insertions(+), 22 deletions(-) diff --git a/output/offsets.cs b/output/offsets.cs index 2be88d8..808b115 100644 --- a/output/offsets.cs +++ b/output/offsets.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2024-06-27 14:27:03.514757 UTC +// 2024-06-28 23:53:41.889494600 UTC namespace CS2Dumper.Offsets { // Module: client.dll @@ -25,7 +25,6 @@ namespace CS2Dumper.Offsets { // Module: engine2.dll public static class Engine2Dll { public const nint dwBuildNumber = 0x52F834; - public const nint dwEngineViewData = 0x5ECC0C; public const nint dwNetworkGameClient = 0x52EBA0; public const nint dwNetworkGameClient_clientTickCount = 0x178; public const nint dwNetworkGameClient_deltaTick = 0x278; @@ -34,7 +33,6 @@ namespace CS2Dumper.Offsets { public const nint dwNetworkGameClient_maxClients = 0x270; public const nint dwNetworkGameClient_serverTickCount = 0x174; public const nint dwNetworkGameClient_signOnState = 0x260; - public const nint dwSoundService = 0x5ECB70; public const nint dwWindowHeight = 0x5F0424; public const nint dwWindowWidth = 0x5F0420; } @@ -45,6 +43,11 @@ namespace CS2Dumper.Offsets { // Module: matchmaking.dll public static class MatchmakingDll { public const nint dwGameTypes = 0x1A41C0; - public const nint dwGameTypes_mapName = 0x1A42E0; + public const nint dwGameTypes_mapName = 0x120; + } + // Module: soundsystem.dll + public static class SoundsystemDll { + public const nint dwSoundSystem = 0x334E40; + public const nint dwSoundSystem_engineViewData = 0x7C; } } diff --git a/output/offsets.hpp b/output/offsets.hpp index 5e08b70..fcd8ca3 100644 --- a/output/offsets.hpp +++ b/output/offsets.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2024-06-27 14:27:03.514757 UTC +// 2024-06-28 23:53:41.889494600 UTC #pragma once @@ -30,7 +30,6 @@ namespace cs2_dumper { // Module: engine2.dll namespace engine2_dll { constexpr std::ptrdiff_t dwBuildNumber = 0x52F834; - constexpr std::ptrdiff_t dwEngineViewData = 0x5ECC0C; constexpr std::ptrdiff_t dwNetworkGameClient = 0x52EBA0; constexpr std::ptrdiff_t dwNetworkGameClient_clientTickCount = 0x178; constexpr std::ptrdiff_t dwNetworkGameClient_deltaTick = 0x278; @@ -39,7 +38,6 @@ namespace cs2_dumper { constexpr std::ptrdiff_t dwNetworkGameClient_maxClients = 0x270; constexpr std::ptrdiff_t dwNetworkGameClient_serverTickCount = 0x174; constexpr std::ptrdiff_t dwNetworkGameClient_signOnState = 0x260; - constexpr std::ptrdiff_t dwSoundService = 0x5ECB70; constexpr std::ptrdiff_t dwWindowHeight = 0x5F0424; constexpr std::ptrdiff_t dwWindowWidth = 0x5F0420; } @@ -50,7 +48,12 @@ namespace cs2_dumper { // Module: matchmaking.dll namespace matchmaking_dll { constexpr std::ptrdiff_t dwGameTypes = 0x1A41C0; - constexpr std::ptrdiff_t dwGameTypes_mapName = 0x1A42E0; + constexpr std::ptrdiff_t dwGameTypes_mapName = 0x120; + } + // Module: soundsystem.dll + namespace soundsystem_dll { + constexpr std::ptrdiff_t dwSoundSystem = 0x334E40; + constexpr std::ptrdiff_t dwSoundSystem_engineViewData = 0x7C; } } } diff --git a/output/offsets.json b/output/offsets.json index fac3d08..187b3f5 100644 --- a/output/offsets.json +++ b/output/offsets.json @@ -20,7 +20,6 @@ }, "engine2.dll": { "dwBuildNumber": 5437492, - "dwEngineViewData": 6212620, "dwNetworkGameClient": 5434272, "dwNetworkGameClient_clientTickCount": 376, "dwNetworkGameClient_deltaTick": 632, @@ -29,7 +28,6 @@ "dwNetworkGameClient_maxClients": 624, "dwNetworkGameClient_serverTickCount": 372, "dwNetworkGameClient_signOnState": 608, - "dwSoundService": 6212464, "dwWindowHeight": 6226980, "dwWindowWidth": 6226976 }, @@ -38,6 +36,10 @@ }, "matchmaking.dll": { "dwGameTypes": 1720768, - "dwGameTypes_mapName": 1721056 + "dwGameTypes_mapName": 288 + }, + "soundsystem.dll": { + "dwSoundSystem": 3362368, + "dwSoundSystem_engineViewData": 124 } } \ No newline at end of file diff --git a/output/offsets.rs b/output/offsets.rs index bdadac7..6bf2b52 100644 --- a/output/offsets.rs +++ b/output/offsets.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2024-06-27 14:27:03.514757 UTC +// 2024-06-28 23:53:41.889494600 UTC #![allow(non_upper_case_globals, unused)] @@ -28,7 +28,6 @@ pub mod cs2_dumper { // Module: engine2.dll pub mod engine2_dll { pub const dwBuildNumber: usize = 0x52F834; - pub const dwEngineViewData: usize = 0x5ECC0C; pub const dwNetworkGameClient: usize = 0x52EBA0; pub const dwNetworkGameClient_clientTickCount: usize = 0x178; pub const dwNetworkGameClient_deltaTick: usize = 0x278; @@ -37,7 +36,6 @@ pub mod cs2_dumper { pub const dwNetworkGameClient_maxClients: usize = 0x270; pub const dwNetworkGameClient_serverTickCount: usize = 0x174; pub const dwNetworkGameClient_signOnState: usize = 0x260; - pub const dwSoundService: usize = 0x5ECB70; pub const dwWindowHeight: usize = 0x5F0424; pub const dwWindowWidth: usize = 0x5F0420; } @@ -48,7 +46,12 @@ pub mod cs2_dumper { // Module: matchmaking.dll pub mod matchmaking_dll { pub const dwGameTypes: usize = 0x1A41C0; - pub const dwGameTypes_mapName: usize = 0x1A42E0; + pub const dwGameTypes_mapName: usize = 0x120; + } + // Module: soundsystem.dll + pub mod soundsystem_dll { + pub const dwSoundSystem: usize = 0x334E40; + pub const dwSoundSystem_engineViewData: usize = 0x7C; } } } diff --git a/src/analysis/offsets.rs b/src/analysis/offsets.rs index ba6cb43..86ec248 100644 --- a/src/analysis/offsets.rs +++ b/src/analysis/offsets.rs @@ -111,9 +111,6 @@ pattern_map! { "dwNetworkGameClient_maxClients" => pattern!("8b81u4 c3cccccccccccccccccc 8b81${} ffc0") => None, "dwNetworkGameClient_serverTickCount" => pattern!("8b81u4 c3 cccccccccccccccccc 83b9") => None, "dwNetworkGameClient_signOnState" => pattern!("448b81u4 488d0d") => None, - "dwSoundService" => pattern!("488905${'} 4c8d4424? 488d05") => Some(|_view, map, rva| { - map.insert("dwEngineViewData".to_string(), rva + 0x9C); - }), "dwWindowHeight" => pattern!("8b05${'} 8903") => None, "dwWindowWidth" => pattern!("8b05${'} 8907") => None, }, @@ -121,20 +118,24 @@ pattern_map! { "dwInputSystem" => pattern!("488905${'} 488d05") => None, }, matchmaking => { - "dwGameTypes" => pattern!("488d0d${'} 33d2") => Some(|_view, map, rva| { - map.insert("dwGameTypes_mapName".to_string(), rva + 0x120); - }), + "dwGameTypes" => pattern!("488d0d${'} 33d2") => None, + "dwGameTypes_mapName" => pattern!("488b81u4 4885c074? 4883c0") => None, + }, + soundsystem => { + "dwSoundSystem" => pattern!("488d05${'} c3 cccccccccccccccc 488915") => None, + "dwSoundSystem_engineViewData" => pattern!("0f1147u1 0f104b") => None, }, } pub fn offsets(process: &mut IntoProcessInstanceArcBox<'_>) -> Result { let mut map = BTreeMap::new(); - let modules: [(&str, fn(PeView) -> BTreeMap); 4] = [ + let modules: [(&str, fn(PeView) -> BTreeMap); 5] = [ ("client.dll", client::offsets), ("engine2.dll", engine2::offsets), ("inputsystem.dll", input_system::offsets), ("matchmaking.dll", matchmaking::offsets), + ("soundsystem.dll", soundsystem::offsets), ]; for (module_name, offsets) in &modules {