cs2-dumper/src/main.rs

94 lines
1.8 KiB
Rust
Raw Normal View History

2023-09-25 22:46:10 +08:00
#![allow(dead_code)]
2023-10-15 20:17:02 +08:00
#![feature(offset_of)]
2023-09-25 22:46:10 +08:00
use std::fs;
use std::time::Instant;
2023-10-20 13:23:43 +08:00
use anyhow::Result;
2023-09-28 22:41:21 +08:00
use clap::Parser;
2023-09-25 22:46:10 +08:00
use simple_logger::SimpleLogger;
use builder::*;
use dumpers::*;
use remote::Process;
mod builder;
mod config;
mod dumpers;
2023-10-05 17:24:14 +08:00
mod mem;
2023-09-25 22:46:10 +08:00
mod remote;
mod sdk;
2023-10-01 20:51:44 +08:00
#[derive(Debug, Parser)]
2023-09-28 22:41:21 +08:00
#[command(author, version, about, long_about = None)]
struct Args {
#[arg(short, long)]
interfaces: bool,
#[arg(short, long)]
offsets: bool,
#[arg(short, long)]
schemas: bool,
2023-10-01 12:43:48 +08:00
#[arg(short, long)]
verbose: bool,
2023-09-28 22:41:21 +08:00
}
2023-09-25 22:46:10 +08:00
fn main() -> Result<()> {
2023-09-28 22:41:21 +08:00
let Args {
interfaces,
offsets,
schemas,
2023-10-01 12:43:48 +08:00
verbose,
2023-09-28 22:41:21 +08:00
} = Args::parse();
2023-10-01 12:43:48 +08:00
let log_level = if verbose {
log::LevelFilter::Debug
} else {
log::LevelFilter::Info
};
2023-09-28 22:41:21 +08:00
2023-10-01 12:43:48 +08:00
SimpleLogger::new()
.with_level(log_level)
.without_timestamps()
.init()
.unwrap();
let start_time = Instant::now();
2023-09-25 22:46:10 +08:00
let process = Process::new("cs2.exe")?;
2023-10-01 12:43:48 +08:00
fs::create_dir_all("generated")?;
2023-09-25 22:46:10 +08:00
let mut builders: Vec<FileBuilderEnum> = vec![
2023-10-05 17:24:14 +08:00
FileBuilderEnum::CppFileBuilder(CppFileBuilder),
FileBuilderEnum::CSharpFileBuilder(CSharpFileBuilder),
2023-09-25 22:46:10 +08:00
FileBuilderEnum::JsonFileBuilder(JsonFileBuilder::default()),
2023-10-17 10:06:23 +08:00
FileBuilderEnum::PythonFileBuilder(PythonFileBuilder),
2023-09-25 22:46:10 +08:00
FileBuilderEnum::RustFileBuilder(RustFileBuilder),
];
2023-10-05 17:24:14 +08:00
let all = !(interfaces || offsets || schemas);
2023-09-28 22:41:21 +08:00
if schemas || all {
dump_schemas(&mut builders, &process)?;
}
if interfaces || all {
dump_interfaces(&mut builders, &process)?;
}
2023-09-25 22:46:10 +08:00
2023-09-28 22:41:21 +08:00
if offsets || all {
dump_offsets(&mut builders, &process)?;
}
2023-09-25 22:46:10 +08:00
let duration = start_time.elapsed();
log::info!("Done! Time elapsed: {:?}", duration);
Ok(())
}