Port `schemasystems` dumper to linux

This commit is contained in:
Albert24GG 2024-03-05 01:16:32 +02:00
parent 1ef287c535
commit 10a908ab6f
2 changed files with 13 additions and 7 deletions

View File

@ -13,10 +13,13 @@ pub struct SchemaSystem<'a> {
impl<'a> SchemaSystem<'a> {
pub fn new(process: &'a Process) -> Result<Self> {
let mut address = process.find_pattern(
let mut address = process
.find_pattern(
"schemasystem.dll",
"48 8D 0D ? ? ? ? E9 ? ? ? ? CC CC CC CC 48 8D 0D ? ? ? ? E9 ? ? ? ? CC CC CC CC 48 83 EC 28"
).expect("unable to find schema system pattern");
"48 8D 05 ? ? ? ? c3 ? ? ? 00 00 00 00 00 48 8d 05 ? ? ? ? c3 ? ? ? 00 00 00 00 00 48 ? ? ? c3"
// "48 8D 0D ? ? ? ? E9 ? ? ? ? CC CC CC CC 48 8D 0D ? ? ? ? E9 ? ? ? ? CC CC CC CC 48 83 EC 28"
)
.expect("unable to find schema system pattern");
address = process.resolve_rip(address, None, None)?;
@ -24,13 +27,15 @@ impl<'a> SchemaSystem<'a> {
}
pub fn type_scopes(&self) -> Result<Vec<SchemaSystemTypeScope>> {
let size = self.process.read_memory::<u32>(self.address + 0x190)?;
// let size = self.process.read_memory::<u32>(self.address + 0x190)?;
let size = self.process.read_memory::<u32>(self.address + 0x1f8)?;
if size == 0 {
bail!("no type scopes found");
}
let data = self.process.read_memory::<usize>(self.address + 0x198)?;
// let data = self.process.read_memory::<usize>(self.address + 0x198)?;
let data = self.process.read_memory::<usize>(self.address + 0x200)?;
let mut addresses = vec![0; size as usize];

View File

@ -17,7 +17,8 @@ impl<'a> SchemaSystemTypeScope<'a> {
pub fn classes(&self) -> Result<Vec<SchemaClassInfo>> {
let declared_classes = self
.process
.read_memory::<UtlTsHash<*mut SchemaTypeDeclaredClass>>(self.address + 0x5B8)?;
.read_memory::<UtlTsHash<*mut SchemaTypeDeclaredClass>>(self.address + 0x620)?;
// .read_memory::<UtlTsHash<*mut SchemaTypeDeclaredClass>>(self.address + 0x5B8)?;
let classes: Vec<SchemaClassInfo> = declared_classes
.elements(self.process)?