fn scan_specific_interfaces(&mut self) -> Result<Vec<Function>> {
        let mut funcs = Vec::new();

        if let Some(vclient) = self.interface_manager.get("client.dll", "VClient018") {
            info!("Scanning for hooks in VClient018");
            // CreateMove @ 22
            // PaintTraverse @ 41
            funcs.append(&mut self.scan_vtable_fns(&vclient, &[22, 41])?);
        }

        // TODO: add more vtable checks :)

        Ok(funcs)
    }
/// Scans only specific (usually cheat related) interfaces and functions.
/// This tends to be more reliable due to the vtable size being unknown and additional paged out pages.
Scans only specific (usually cheat related) interfaces and functions.
This tends to be more reliable due to the vtable size being unknown and additional paged out pages.
Scans only specific ( usually cheat related ) interfaces and functions . This tends to be more reliable due to the vtable size being unknown and additional paged out pages .
fn scan_specific_interfaces(&mut self) -> Result<Vec<Function>> {
        let mut funcs = Vec::new();
        if let Some(vclient) = self.interface_manager.get("client.dll", "VClient018") {
            info!("Scanning for hooks in VClient018");
            // CreateMove @ 22
            // PaintTraverse @ 41
            funcs.append(&mut self.scan_vtable_fns(&vclient, &[22, 41])?);
        }
        // TODO: add more vtable checks :)
        Ok(funcs)
    }
fn scan_specific_interfaces ( & mut self ) -> Result < Vec < Function > > { let mut funcs = Vec :: new ( ) ; if let Some ( vclient ) = self . interface_manager . get ( " " , " " ) { info ! ( " " ) ; // CreateMove @ 22 // PaintTraverse @ 41 funcs . append ( & mut self . scan_vtable_fns ( & vclient , & [ 22 , 41 ] ) ? ) ; } // TODO: add more vtable checks :) Ok ( funcs ) }
Scans only specific (usually cheat related) interfaces and functions.
Scans only specific ( usually cheat related ) interfaces and functions .
&mut self
&mut self