📦 Game Update 13952

This commit is contained in:
a2x
2023-09-30 12:40:34 +10:00
parent b61d63b6ef
commit 5963b4fef0
19 changed files with 210 additions and 195 deletions

View File

@@ -17,15 +17,15 @@ pub fn dump_interfaces(builders: &mut Vec<FileBuilderEnum>, process: &Process) -
if let Some(create_interface_export) = module.export("CreateInterface") {
let create_interface_address = process.resolve_rip(create_interface_export.va)?;
let mut interface_registry = process
let mut interface_registry_ptr = process
.read_memory::<usize>(create_interface_address)
.unwrap_or(0);
while interface_registry != 0 {
let interface_ptr = process.read_memory::<usize>(interface_registry)?;
while interface_registry_ptr != 0 {
let interface_ptr = process.read_memory::<usize>(interface_registry_ptr)?;
let interface_version_name_ptr =
process.read_memory::<usize>(interface_registry + 0x8)?;
process.read_memory::<usize>(interface_registry_ptr + 0x8)?;
let interface_version_name = process.read_string(interface_version_name_ptr, 64)?;
@@ -41,7 +41,8 @@ pub fn dump_interfaces(builders: &mut Vec<FileBuilderEnum>, process: &Process) -
.or_default()
.push((interface_version_name, interface_ptr - module.address()));
interface_registry = process.read_memory::<usize>(interface_registry + 0x10)?;
interface_registry_ptr =
process.read_memory::<usize>(interface_registry_ptr + 0x10)?;
}
}
}

View File

@@ -8,6 +8,7 @@ pub enum Error {
ModuleNotFound,
PatternNotFound,
ProcessNotFound,
SectionNotFound,
SerdeError(serde_json::Error),
Utf8Error(std::string::FromUtf8Error),
WindowsError(windows::core::Error),
@@ -44,6 +45,7 @@ impl std::fmt::Display for Error {
Self::ModuleNotFound => write!(fmt, "Module not found"),
Self::PatternNotFound => write!(fmt, "Pattern not found"),
Self::ProcessNotFound => write!(fmt, "Process not found"),
Self::SectionNotFound => write!(fmt, "Section not found"),
Self::SerdeError(err) => write!(fmt, "Serde error: {}", err),
Self::Utf8Error(err) => write!(fmt, "UTF-8 error: {}", err),
Self::WindowsError(err) => write!(fmt, "Windows error: {}", err),

View File

@@ -18,8 +18,8 @@ pub struct Export {
#[derive(Debug)]
pub struct Section {
pub name: String,
pub start_rva: usize,
pub end_rva: usize,
pub start_va: usize,
pub end_va: usize,
pub size: usize,
}
@@ -61,7 +61,7 @@ impl<'a> Module<'a> {
let size = nt_headers.OptionalHeader.SizeOfImage;
let exports = unsafe { Self::parse_exports(process, address, size, nt_headers)? };
let sections = unsafe { Self::parse_sections(nt_headers) };
let sections = unsafe { Self::parse_sections(address, nt_headers) };
Ok(Self {
address,
@@ -177,7 +177,7 @@ impl<'a> Module<'a> {
Ok(exports)
}
unsafe fn parse_sections(nt_headers: &IMAGE_NT_HEADERS64) -> Vec<Section> {
unsafe fn parse_sections(address: usize, nt_headers: &IMAGE_NT_HEADERS64) -> Vec<Section> {
let optional_header_ptr = &nt_headers.OptionalHeader as *const _ as *const u8;
let section_header_ptr = optional_header_ptr
@@ -198,12 +198,16 @@ impl<'a> Module<'a> {
let start_rva = section.VirtualAddress as usize;
let end_rva = start_rva + section.Misc.VirtualSize as usize;
let start_va = address + start_rva;
let end_va = address + end_rva;
let size = section.SizeOfRawData as usize;
Section {
name,
start_rva,
end_rva,
start_va,
end_va,
size,
}
})