Rename some schema struct fields

This commit is contained in:
a2x 2024-06-18 12:41:12 +10:00
parent ab0ab534a1
commit 3590d4412c
8 changed files with 44 additions and 41 deletions

View File

@ -144,7 +144,7 @@ fn read_class_binding_fields(
return Ok(Vec::new()); return Ok(Vec::new());
} }
(0..binding.field_count).try_fold(Vec::new(), |mut acc, i| { (0..binding.fields_count).try_fold(Vec::new(), |mut acc, i| {
let field = binding.fields.at(i as _).read(process)?; let field = binding.fields.at(i as _).read(process)?;
if field.schema_type.is_null() { if field.schema_type.is_null() {
@ -178,12 +178,12 @@ fn read_class_binding_metadata(
(0..binding.static_metadata_count).try_fold(Vec::new(), |mut acc, i| { (0..binding.static_metadata_count).try_fold(Vec::new(), |mut acc, i| {
let metadata = binding.static_metadata.at(i as _).read(process)?; let metadata = binding.static_metadata.at(i as _).read(process)?;
if metadata.data.is_null() { if metadata.network_value.is_null() {
return Ok(acc); return Ok(acc);
} }
let name = metadata.name.read_string(process)?.to_string(); let name = metadata.name.read_string(process)?.to_string();
let network_value = metadata.data.read(process)?; let network_value = metadata.network_value.read(process)?;
let metadata = match name.as_str() { let metadata = match name.as_str() {
"MNetworkChangeCallback" => unsafe { "MNetworkChangeCallback" => unsafe {
@ -229,14 +229,14 @@ fn read_enum_binding(
"found enum: {} @ {:#X} (alignment: {}) (members count: {})", "found enum: {} @ {:#X} (alignment: {}) (members count: {})",
name, name,
binding_ptr.to_umem(), binding_ptr.to_umem(),
binding.alignment, binding.align_of,
binding.size, binding.size,
); );
Ok(Enum { Ok(Enum {
name, name,
alignment: binding.alignment, alignment: binding.align_of,
size: binding.enumerator_count, size: binding.enumerators_count,
members, members,
}) })
} }
@ -249,7 +249,7 @@ fn read_enum_binding_members(
return Ok(Vec::new()); return Ok(Vec::new());
} }
(0..binding.enumerator_count).try_fold(Vec::new(), |mut acc, i| { (0..binding.enumerators_count).try_fold(Vec::new(), |mut acc, i| {
let enumerator = binding.enumerators.at(i as _).read(process)?; let enumerator = binding.enumerators.at(i as _).read(process)?;
let name = enumerator.name.read_string(process)?.to_string(); let name = enumerator.name.read_string(process)?.to_string();
@ -270,10 +270,10 @@ fn read_schema_system(process: &mut IntoProcessInstanceArcBox<'_>) -> Result<Sch
let mut save = [0; 2]; let mut save = [0; 2];
if !view.scanner().finds_code( if !view
pattern!("488905${'} 4c8d0d${} 0fb645? 4c8d45? 33f6"), .scanner()
&mut save, .finds_code(pattern!("4c8d35${'} 0f2845"), &mut save)
) { {
return Err(Error::Other("unable to find schema system pattern")); return Err(Error::Other("unable to find schema system pattern"));
} }

View File

@ -8,6 +8,6 @@ pub struct SchemaClassFieldData {
pub name: Pointer64<ReprCString>, // 0x0000 pub name: Pointer64<ReprCString>, // 0x0000
pub schema_type: Pointer64<SchemaType>, // 0x0008 pub schema_type: Pointer64<SchemaType>, // 0x0008
pub single_inheritance_offset: i32, // 0x0010 pub single_inheritance_offset: i32, // 0x0010
pub static_metadata_count: i32, // 0x0014 pub metadata_count: i32, // 0x0014
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018 pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018
} }

View File

@ -1,6 +1,9 @@
use memflow::prelude::v1::*; use memflow::prelude::v1::*;
use super::*; use super::{
SchemaBaseClassInfoData, SchemaClassFieldData, SchemaMetadataEntryData, SchemaStaticFieldData,
SchemaSystemTypeScope, SchemaType,
};
pub type SchemaClassBinding = SchemaClassInfoData; pub type SchemaClassBinding = SchemaClassInfoData;
@ -12,13 +15,13 @@ pub struct SchemaClassInfoData {
pub name: Pointer64<ReprCString>, // 0x0008 pub name: Pointer64<ReprCString>, // 0x0008
pub module_name: Pointer64<ReprCString>, // 0x0010 pub module_name: Pointer64<ReprCString>, // 0x0010
pub size: i32, // 0x0018 pub size: i32, // 0x0018
pub field_count: u16, // 0x001C pub fields_count: i16, // 0x001C
pub static_field_count: u16, // 0x001E pub static_fields_count: i16, // 0x001E
pub static_metadata_count: u16, // 0x0020 pub static_metadata_count: i16, // 0x0020
pub alignment: u8, // 0x0022 pub align_of: u8, // 0x0022
pub base_class_count: u8, // 0x0023 pub has_base_class: u8, // 0x0023
pub multiple_inheritance_depth: u16, // 0x0024 pub total_class_size: i16, // 0x0024
pub single_inheritance_depth: u16, // 0x0026 pub derived_class_size: i16, // 0x0026
pub fields: Pointer64<[SchemaClassFieldData]>, // 0x0028 pub fields: Pointer64<[SchemaClassFieldData]>, // 0x0028
pub static_fields: Pointer64<[SchemaStaticFieldData]>, // 0x0030 pub static_fields: Pointer64<[SchemaStaticFieldData]>, // 0x0030
pub base_classes: Pointer64<SchemaBaseClassInfoData>, // 0x0038 pub base_classes: Pointer64<SchemaBaseClassInfoData>, // 0x0038

View File

@ -12,9 +12,9 @@ pub struct SchemaEnumInfoData {
pub name: Pointer64<ReprCString>, // 0x0008 pub name: Pointer64<ReprCString>, // 0x0008
pub module_name: Pointer64<ReprCString>, // 0x0010 pub module_name: Pointer64<ReprCString>, // 0x0010
pub size: u8, // 0x0018 pub size: u8, // 0x0018
pub alignment: u8, // 0x0019 pub align_of: u8, // 0x0019
pub flags: u16, // 0x001A pad_001a: [u8; 0x2], // 0x001A
pub enumerator_count: u16, // 0x001C pub enumerators_count: u16, // 0x001C
pub static_metadata_count: u16, // 0x001E pub static_metadata_count: u16, // 0x001E
pub enumerators: Pointer64<[SchemaEnumeratorInfoData]>, // 0x0020 pub enumerators: Pointer64<[SchemaEnumeratorInfoData]>, // 0x0020
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0028 pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0028

View File

@ -7,9 +7,9 @@ use super::SchemaMetadataEntryData;
pub struct SchemaEnumeratorInfoData { pub struct SchemaEnumeratorInfoData {
pub name: Pointer64<ReprCString>, // 0x0000 pub name: Pointer64<ReprCString>, // 0x0000
pub value: SchemaEnumeratorInfoDataUnion, // 0x0008 pub value: SchemaEnumeratorInfoDataUnion, // 0x0008
pub static_metadata_count: i32, // 0x0010 pub metadata_count: i32, // 0x0010
pad_0014: [u8; 0x4], // 0x0014 pad_0014: [u8; 0x4], // 0x0014
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018 pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018
} }
#[repr(C)] #[repr(C)]

View File

@ -6,7 +6,7 @@ use memflow::prelude::v1::*;
#[repr(C)] #[repr(C)]
pub struct SchemaMetadataEntryData { pub struct SchemaMetadataEntryData {
pub name: Pointer64<ReprCString>, // 0x0000 pub name: Pointer64<ReprCString>, // 0x0000
pub data: Pointer64<SchemaNetworkValue>, // 0x0008 pub network_value: Pointer64<SchemaNetworkValue>, // 0x0008
} }
#[derive(Pod)] #[derive(Pod)]

View File

@ -8,7 +8,7 @@ pub struct SchemaStaticFieldData {
pub name: Pointer64<ReprCString>, // 0x0000 pub name: Pointer64<ReprCString>, // 0x0000
pub type_: Pointer64<SchemaType>, // 0x0008 pub type_: Pointer64<SchemaType>, // 0x0008
pub instance: Pointer64<()>, // 0x0010 pub instance: Pointer64<()>, // 0x0010
pub static_metadata_count: i32, // 0x0018 pub metadata_count: i32, // 0x0018
pad_001c: [u8; 0x4], // 0x001C pad_001c: [u8; 0x4], // 0x001C
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0020 pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0020
} }

View File

@ -10,6 +10,6 @@ pub struct SchemaSystem {
pad_0000: [u8; 0x188], // 0x0000 pad_0000: [u8; 0x188], // 0x0000
pub type_scopes: UtlVector<Pointer64<SchemaSystemTypeScope>>, // 0x0188 pub type_scopes: UtlVector<Pointer64<SchemaSystemTypeScope>>, // 0x0188
pad_0198: [u8; 0x120], // 0x0198 pad_0198: [u8; 0x120], // 0x0198
pub num_registrations: u32, // 0x02B8 pub num_registrations: i32, // 0x02B8
pad_02bc: [u8; 0xAC], // 0x02BC pad_02bc: [u8; 0xAC], // 0x02BC
} }