use pdb_helper as pdb; use simple_logger::SimpleLogger; use std::time::Duration; use windows::s; #[no_mangle] pub extern "win64" fn DllMain(_module: usize, reason: u32, _: usize) -> bool { match reason { 1 => { if std::env::current_exe() .expect("current exe") .file_name() .expect("file name") .to_string_lossy() == "ShooterGame.exe" { SimpleLogger::new().init().unwrap(); log::info!("hello"); std::thread::spawn(move || { let _wnd = loop { let window = unsafe { windows::Win32::UI::WindowsAndMessaging::FindWindowA( None, s!("ARK: Survival Evolved"), ) }; if window.0 != 0 { log::debug!("found window: {window:?}"); break window; } log::trace!("window was 0"); std::thread::sleep(std::time::Duration::from_millis(150)); }; let globals = pdb::get_pdb().find_ue_globals().expect("globals"); unreal_sdk::global_tables::names::GNAMES .write() .unwrap() .set_names(globals.names.cast()); unreal_sdk::global_tables::objects::GOBJECTS .write() .unwrap() .set_objects(globals.objects.cast()); std::thread::sleep(Duration::from_secs(30)); let sdk = unreal_sdk::sdk::repr::Sdk::build().expect("sdk"); sdk.save_to_path("z:/tmp/sdk.ron").expect("writing sdk"); log::info!("done."); }); } } _ => {} } true }