Game update (14090)

This commit is contained in:
a2x
2025-07-29 18:11:56 +10:00
parent 778d3f2e4b
commit 7f60c80c21
93 changed files with 81586 additions and 66642 deletions

View File

@@ -75,39 +75,38 @@ pattern_map! {
"dwCSGOInput" => pattern!("488905${'} 0f57c0 0f1105") => Some(|view, map, rva| {
let mut save = [0; 2];
if view.scanner().finds_code(pattern!("f2410f108430u4"), &mut save) {
if view.scanner().finds_code(pattern!("f2420f108428u4"), &mut save) {
map.insert("dwViewAngles".to_string(), rva + save[1]);
}
}),
"dwEntityList" => pattern!("488935${'} 4885f6") => None,
"dwGameEntitySystem" => pattern!("488b1d${'} 48891d") => None,
"dwGameEntitySystem_highestEntityIndex" => pattern!("8b81u2?? 8902 488bc2 c3 cccccccc 48895c24? 48896c24") => None,
"dwGameEntitySystem" => pattern!("488b3d${'} 48893d") => None,
"dwGameEntitySystem_highestEntityIndex" => pattern!("ff81u4 4885d2") => None,
"dwGameRules" => pattern!("48891d${'} ff15${} 84c0") => None,
"dwGlobalVars" => pattern!("488915${'} 488942") => None,
"dwGlowManager" => pattern!("488b05${'} c3 cccccccccccccccc 8b41") => None,
"dwLocalPlayerController" => pattern!("488905${'} 8b9e") => None,
"dwLocalPlayerController" => pattern!("488b05${'} 4189be") => None,
"dwPlantedC4" => pattern!("488b15${'} 41ffc0") => None,
"dwPrediction" => pattern!("488d05${'} c3 cccccccccccccccc 4883ec? 8b0d") => Some(|_view, map, rva| {
map.insert("dwLocalPlayerPawn".to_string(), rva + 0x180);
"dwPrediction" => pattern!("488d05${'} c3 cccccccccccccccc 405356 4154") => Some(|view, map, rva| {
let mut save = [0; 2];
if view.scanner().finds_code(pattern!("4c39b6u4 74? 4488be"), &mut save) {
map.insert("dwLocalPlayerPawn".to_string(), rva + save[1]);
}
}),
"dwSensitivity" => pattern!("488d0d${[8]'} 440f28c1 0f28f3 0f28fa e8") => None,
"dwSensitivity_sensitivity" => pattern!("ff50u1 4c8bc6 488d55? 488bcf e8${} 84c0 0f85${} 4c8d45? 8bd3 488bcf e8${} e9${} f30f1006") => None,
"dwSensitivity" => pattern!("488d0d${[8]'} 660f6ecd") => None,
"dwSensitivity_sensitivity" => pattern!("488d7eu1 480fbae0? 72? 85d2 490f4fff") => None,
"dwViewMatrix" => pattern!("488d0d${'} 48c1e006") => None,
"dwViewRender" => pattern!("488905${'} 488bc8 4885c0") => None,
"dwWeaponC4" => pattern!("488b15${'} 488b5c24? ffc0 8905[4] 488bc7") => None,
"dwWeaponC4" => pattern!("488905${'} f7c1[4] 74? 81e1[4] 890d${} 8b05${} 891d${} eb? 488b15${} 488b5c24? ffc0 8905${} 488bc6 488934ea 80be") => None,
},
engine2 => {
"dwBuildNumber" => pattern!("8905${'} 488d0d${} ff15${} 488b0d") => None,
"dwNetworkGameClient" => pattern!("48893d${'} 488d15") => None,
"dwNetworkGameClient_clientTickCount" => pattern!("8b81u4 c3 cccccccccccccccccc 8b81${} c3 cccccccccccccccccc 83b9") => None,
"dwNetworkGameClient_deltaTick" => pattern!("89b3u4 8b45") => None,
"dwNetworkGameClient_isBackgroundMap" => pattern!("0fb681u4 c3 cccccccccccccccc 0fb681${} c3 cccccccccccccccc 48895c24") => None,
"dwNetworkGameClient_localPlayer" => pattern!("4883c0u1 488d0440 8b0cc1") => Some(|_view, map, rva| {
// .text 48 83 C0 0A | add rax, 0Ah
// .text 48 8D 04 40 | lea rax, [rax + rax * 2]
// .text 8B 0C C1 | mov ecx, [rcx + rax * 8]
map.insert("dwNetworkGameClient_localPlayer".to_string(), (rva + (rva * 2)) * 8);
}),
"dwNetworkGameClient_deltaTick" => pattern!("4c8db7u4 4c897c24") => None,
"dwNetworkGameClient_isBackgroundMap" => pattern!("0fb681u4 c3 cccccccccccccccc 0fb681${} c3 cccccccccccccccc 4053") => None,
"dwNetworkGameClient_localPlayer" => pattern!("428b94d3u4 5b 49ffe3 32c0 5b c3 cccccccccccccccc 4053") => None,
"dwNetworkGameClient_maxClients" => pattern!("8b81u4 c3cccccccccccccccccc 8b81${} ffc0") => None,
"dwNetworkGameClient_serverTickCount" => pattern!("8b81u4 c3 cccccccccccccccccc 83b9") => None,
"dwNetworkGameClient_signOnState" => pattern!("448b81u4 488d0d") => None,
@@ -115,15 +114,14 @@ pattern_map! {
"dwWindowWidth" => pattern!("8b05${'} 8907") => None,
},
input_system => {
"dwInputSystem" => pattern!("488905${'} 488d05") => None,
"dwInputSystem" => pattern!("488905${'} 33c0") => None,
},
matchmaking => {
"dwGameTypes" => pattern!("488d0d${'} 33d2") => None,
"dwGameTypes_mapName" => pattern!("488b81u4 4885c074? 4883c0") => None,
"dwGameTypes" => pattern!("488d0d${'} ff90") => None,
},
soundsystem => {
"dwSoundSystem" => pattern!("488d05${'} c3 cccccccccccccccc 488915") => None,
"dwSoundSystem_engineViewData" => pattern!("0f1147u1 0f104b") => None,
"dwSoundSystem_engineViewData" => pattern!("0f1147u1 0f104b? 0f118f") => None,
},
}

View File

@@ -100,11 +100,6 @@ fn read_class_binding(
let base_class = mem.read_ptr(ptr).data_part().ok()?;
let parent_class = mem.read_ptr(base_class.prev).data_part().ok()?;
let module_name = mem
.read_utf8_lossy(parent_class.module_name.address(), 128)
.data_part()
.ok()?;
let name = mem
.read_utf8_lossy(parent_class.name.address(), 4096)
.data_part()
@@ -112,7 +107,7 @@ fn read_class_binding(
Some(Box::new(Class {
name,
module_name,
module_name: String::new(),
parent: None,
metadata: Vec::new(),
fields: Vec::new(),
@@ -301,7 +296,7 @@ fn read_schema_system<P: Process + MemoryView>(process: &mut P) -> Result<Schema
if !view
.scanner()
.finds_code(pattern!("4c8d35${'} 0f2845"), &mut save)
.finds_code(pattern!("488905${'} 4c8d0d${} 0fb645? 4c8d45? 33f6"), &mut save)
{
bail!("outdated schema system pattern");
}

View File

@@ -4,7 +4,6 @@ pub use schema_class_info_data::*;
pub use schema_enum_info_data::*;
pub use schema_enumerator_info_data::*;
pub use schema_metadata_entry_data::*;
pub use schema_static_field_data::*;
pub use schema_system::*;
pub use schema_system_type_scope::*;
pub use schema_type::*;
@@ -15,7 +14,6 @@ pub mod schema_class_info_data;
pub mod schema_enum_info_data;
pub mod schema_enumerator_info_data;
pub mod schema_metadata_entry_data;
pub mod schema_static_field_data;
pub mod schema_system;
pub mod schema_system_type_scope;
pub mod schema_type;

View File

@@ -2,10 +2,18 @@ use memflow::prelude::v1::*;
use super::SchemaClassInfoData;
#[derive(Pod)]
#[repr(C)]
pub struct SchemaBaseClassInfoData {
pub offset: u32, // 0x0000
pad_0004: [u8; 4], // 0x0004
pub prev: Pointer64<SchemaClassInfoData>, // 0x0008
pad_0000: [u8; 0x18], // 0x0000
pub prev: Pointer64<SchemaBaseClass>, // 0x0018
}
unsafe impl Pod for SchemaBaseClassInfoData {}
#[repr(C)]
pub struct SchemaBaseClass {
pad_0000: [u8; 0x10], // 0x0000
pub name: Pointer64<ReprCString>, // 0x0010
}
unsafe impl Pod for SchemaBaseClass {}

View File

@@ -13,17 +13,16 @@ pub struct SchemaClassInfoData {
pub module_name: Pointer64<ReprCString>, // 0x0010
pub size: i32, // 0x0018
pub field_count: i16, // 0x001C
pub static_field_count: i16, // 0x001E
pub static_metadata_count: i16, // 0x0020
pub static_metadata_count: i16, // 0x001E
pad_0020: [u8; 0x2], // 0x0020
pub align_of: u8, // 0x0022
pub has_base_class: u8, // 0x0023
pub total_class_size: i16, // 0x0024
pub derived_class_size: i16, // 0x0026
pub fields: Pointer64<[SchemaClassFieldData]>, // 0x0028
pub static_fields: Pointer64<[SchemaStaticFieldData]>, // 0x0030
pad_0038: [u8; 0x8], // 0x0030
pub base_classes: Pointer64<SchemaBaseClassInfoData>, // 0x0038
pad_0040: [u8; 0x8], // 0x0040
pub static_metadata: Pointer64<[SchemaMetadataEntryData]>, // 0x0048
pub static_metadata: Pointer64<[SchemaMetadataEntryData]>, // 0x0040
pub type_scope: Pointer64<SchemaSystemTypeScope>, // 0x0050
pub r#type: Pointer64<SchemaType>, // 0x0058
pad_0060: [u8; 0x10], // 0x0060

View File

@@ -1,14 +0,0 @@
use memflow::prelude::v1::*;
use super::{SchemaMetadataEntryData, SchemaType};
#[derive(Pod)]
#[repr(C)]
pub struct SchemaStaticFieldData {
pub name: Pointer64<ReprCString>, // 0x0000
pub r#type: Pointer64<SchemaType>, // 0x0008
pub instance: Pointer64<()>, // 0x0010
pub metadata_count: i32, // 0x0018
pad_001c: [u8; 0x4], // 0x001C
pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0020
}

View File

@@ -4,12 +4,12 @@ use super::SchemaSystemTypeScope;
use crate::source2::UtlVector;
#[derive(Pod)]
#[repr(C)]
pub struct SchemaSystem {
pad_0000: [u8; 0x188], // 0x0000
pub type_scopes: UtlVector<Pointer64<SchemaSystemTypeScope>>, // 0x0188
pad_0198: [u8; 0x120], // 0x0198
pub num_registrations: i32, // 0x02B8
pad_02bc: [u8; 0xAC], // 0x02BC
pad_0198: [u8; 0xE0], // 0x0198
pub num_registrations: i32, // 0x0278
}
unsafe impl Pod for SchemaSystem {}