From 10da0883a10be097ad3fdf1819ee64ecd64c0259 Mon Sep 17 00:00:00 2001 From: Janek <development@superyu.xyz> Date: Wed, 17 Apr 2024 18:55:46 +0200 Subject: [PATCH 1/7] feat: faster bomb holder search Fully batched bomb holder search --- src/dma/context/mod.rs | 94 ++++++++++++++++++++++++++++++++++++++- src/dma/mod.rs | 48 ++++++-------------- src/dma/threaddata/mod.rs | 2 +- 3 files changed, 108 insertions(+), 36 deletions(-) diff --git a/src/dma/context/mod.rs b/src/dma/context/mod.rs index 8ee5e75..755bc4b 100755 --- a/src/dma/context/mod.rs +++ b/src/dma/context/mod.rs @@ -144,6 +144,97 @@ impl DmaCtx { Ok(is_controller) } + pub fn get_c4_holder(&mut self, pawns: Vec<Address>, entity_list: Address) -> Option<Address> { + // (pawn, wep_services, wep_count, wep_base) + let mut data_vec: Vec<(Address, u64, i32, u64)> = pawns + .into_iter() + .map(|pawn| (pawn, 0u64, 0i32, 0u64)) + .collect(); + + // Get wep_services + let mut batcher = self.process.batcher(); + data_vec.iter_mut().for_each(|(pawn, wep_services, _, _)| { + batcher.read_into(*pawn + cs2dumper::client::C_BasePlayerPawn::m_pWeaponServices, wep_services); + }); + drop(batcher); + + // Get wep_count and wep_base + let mut batcher = self.process.batcher(); + data_vec.iter_mut().for_each(|(_, wep_services, wep_count, wep_base)| { + batcher.read_into((*wep_services + cs2dumper::client::CPlayer_WeaponServices::m_hMyWeapons as u64).into(), wep_count); + batcher.read_into((*wep_services + cs2dumper::client::CPlayer_WeaponServices::m_hMyWeapons as u64 + 0x8).into() , wep_base); + }); + drop(batcher); + + // Rebuild data vec + // Vec<(pawn, wep_base, Vec<(buff, buff2)>)> + let mut data_vec: Vec<(Address, u64, Vec<(u64, i32)>)> = data_vec + .into_iter() + .map(|(pawn, _, wep_count, wep_base)| { + let weps = (0..wep_count).into_iter().map(|idx| (0u64, idx)).collect(); + (pawn, wep_base, weps) + }) + .collect(); + + // Get handle + let mut batcher = self.process.batcher(); + data_vec.iter_mut().for_each(|(_, wep_base, wep_data_vec)| { + wep_data_vec.iter_mut().for_each(|(_, idx)| { + let b: Address = (*wep_base).into(); + batcher.read_into(b + * idx * 0x4, idx); + }); + }); + drop(batcher); + + // Get list entry + let mut batcher = self.process.batcher(); + data_vec.iter_mut().for_each(|(_, _, wep_data_vec)| { + wep_data_vec.iter_mut().for_each(|(list_entry, handle)| { + batcher.read_into(entity_list + 0x8 * ((*handle & 0x7FFF) >> 9) + 16, list_entry); + }); + }); + drop(batcher); + + // Get wep ptr + let mut batcher = self.process.batcher(); + data_vec.iter_mut().for_each(|(_, _, wep_data_vec)| { + wep_data_vec.iter_mut().for_each(|(list_entry, handle)| { + let le: Address = (*list_entry).into(); + batcher.read_into(le + 120 * (*handle & 0x1FF), list_entry); + }); + }); + drop(batcher); + + // Get wep data + let mut batcher = self.process.batcher(); + data_vec.iter_mut().for_each(|(_, _, wep_data_vec)| { + wep_data_vec.iter_mut().for_each(|(wep_ptr, _)| { + let b: Address = (*wep_ptr).into(); + batcher.read_into(b + cs2dumper::client::C_BaseEntity::m_nSubclassID + 0x8, wep_ptr); + }); + }); + drop(batcher); + + // Get wep id + let mut batcher = self.process.batcher(); + data_vec.iter_mut().for_each(|(_, _, wep_data_vec)| { + wep_data_vec.iter_mut().for_each(|(wep_data, id)| { + let b: Address = (*wep_data).into(); + batcher.read_into(b + cs2dumper::client::CCSWeaponBaseVData::m_WeaponType, id); + }); + }); + drop(batcher); + + let holder = data_vec.into_iter().find(|(_, _, wep_data_vec)| { + wep_data_vec.iter().find(|(_, id)| { *id == 7 }).is_some() + }); + + match holder { + Some((addr, _, _)) => Some(addr), + None => None, + } + } + // Todo: Optimize this function: find another way to do this pub fn has_c4(&mut self, pawn: Address, entity_list: Address) -> anyhow::Result<bool> { let mut has_c4 = false; @@ -165,7 +256,8 @@ impl DmaCtx { let ptr = self.process.read_addr64(list_entry + 120 * (handle & 0x1FF))?; Some(ptr) } - } { + } + { let wep_data = self.process.read_addr64(wep_ptr + cs2dumper::client::C_BaseEntity::m_nSubclassID + 0x8)?; let id: i32 = self.process.read(wep_data + cs2dumper::client::CCSWeaponBaseVData::m_WeaponType)?; diff --git a/src/dma/mod.rs b/src/dma/mod.rs index 5b4da83..5e926e7 100755 --- a/src/dma/mod.rs +++ b/src/dma/mod.rs @@ -1,8 +1,8 @@ use std::{thread, time::{Duration, Instant}}; -use memflow::{os::Process, types::Address, mem::MemoryView}; +use memflow::{os::Process, mem::MemoryView}; -use crate::{enums::{TeamID, PlayerType}, comms::{EntityData, PlayerData, RadarData, ArcRwlockRadarData, BombData}}; +use crate::{enums::PlayerType, comms::{EntityData, PlayerData, RadarData, ArcRwlockRadarData, BombData}}; use self::{context::DmaCtx, threaddata::CsData}; @@ -54,6 +54,12 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_ data.recheck_bomb_holder = true; } + if data.recheck_bomb_holder { + let pawns = data.players.clone().into_iter().map(|(_, pawn)| pawn).collect(); + data.bomb_holder = ctx.get_c4_holder(pawns, data.entity_list.into()); + data.recheck_bomb_holder = false; + } + let bomb_defuse_timeleft: f32 = { if data.bomb_planted && !data.bomb_exploded && !data.bomb_defused { if let Some(bomb_stamp) = data.bomb_planted_stamp { @@ -123,23 +129,9 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_ ).unwrap(); if local_data.health > 0 { - let has_bomb = { - if data.bomb_planted || data.bomb_dropped { - false - } else if data.recheck_bomb_holder { - if local_data.team == Some(TeamID::T) && !data.bomb_dropped && !data.bomb_planted { - let is_holder = ctx.has_c4( - data.local_pawn.into(), data.entity_list.into() - ).unwrap_or(false); - - if is_holder { - data.bomb_holder = data.local.into(); - data.recheck_bomb_holder = false; - } - - is_holder - } else { false } - } else { Address::from(data.local) == data.bomb_holder } + let has_bomb = match data.bomb_holder { + Some(bh) => data.local_pawn == bh.to_umem(), + None => false, }; entity_data.push( @@ -164,21 +156,9 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_ continue; } - let has_bomb = { - if data.bomb_planted { - false - } else if data.recheck_bomb_holder { - if player_data.team == Some(TeamID::T) && !data.bomb_dropped && !data.bomb_planted { - let is_holder = ctx.has_c4(*pawn, data.entity_list.into()).unwrap_or(false); - - if is_holder { - data.bomb_holder = *controller; - data.recheck_bomb_holder = false; - } - - is_holder - } else { false } - } else { *controller == data.bomb_holder } + let has_bomb = match data.bomb_holder { + Some(bh) => *pawn == bh, + None => false, }; let player_type = { diff --git a/src/dma/threaddata/mod.rs b/src/dma/threaddata/mod.rs index efdf66f..40df3c0 100755 --- a/src/dma/threaddata/mod.rs +++ b/src/dma/threaddata/mod.rs @@ -9,7 +9,7 @@ pub struct CsData { // Entities pub players: Vec<(Address, Address)>, pub bomb: Address, - pub bomb_holder: Address, + pub bomb_holder: Option<Address>, pub recheck_bomb_holder: bool, // Pointers From 00d883a41c7605be881a4e57b21bfa01c2c2c9a2 Mon Sep 17 00:00:00 2001 From: Janek <development@superyu.xyz> Date: Wed, 17 Apr 2024 18:43:21 +0200 Subject: [PATCH 2/7] feat: add native mode - Add native mode - Fix bomb holder search and wrong bomb holder on round starts --- Cargo.lock | 470 ++++++++++++++++++++++++++++++++++- Cargo.toml | 1 + src/cli.rs | 4 +- src/dma/context/connector.rs | 4 +- src/dma/context/mod.rs | 47 +--- src/dma/mod.rs | 29 ++- src/dma/threaddata/mod.rs | 15 +- 7 files changed, 515 insertions(+), 55 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e4c4e1..cdaf892 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -91,6 +91,21 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "0.6.13" @@ -168,6 +183,17 @@ dependencies = [ "syn 2.0.58", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.2.0" @@ -253,6 +279,26 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.5.0", + "cexpr", + "clang-sys", + "itertools 0.10.5", + "lazy_static", + "lazycell", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.58", +] + [[package]] name = "bit_field" version = "0.10.2" @@ -336,6 +382,15 @@ version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -382,6 +437,29 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.52.4", +] + +[[package]] +name = "clang-sys" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +dependencies = [ + "glob", + "libc", + "libloading 0.8.3", +] + [[package]] name = "clap" version = "4.5.4" @@ -449,6 +527,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "core-foundation" version = "0.9.4" @@ -489,6 +573,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossbeam-channel" version = "0.5.12" @@ -579,6 +672,19 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] + [[package]] name = "derive_pod" version = "0.1.2" @@ -642,12 +748,36 @@ dependencies = [ "syn 2.0.58", ] +[[package]] +name = "env_logger" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + [[package]] name = "errno" version = "0.3.8" @@ -658,6 +788,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "fastrand" version = "2.0.2" @@ -670,6 +810,16 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bb23c599a9ff5b981529099902fe5de8d55ecc8c1f451542da17b8d2d65326e" +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -786,6 +936,12 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "goblin" version = "0.8.0" @@ -832,12 +988,27 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + [[package]] name = "hermit-abi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "http" version = "1.1.0" @@ -890,6 +1061,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "hyper" version = "1.2.0" @@ -947,6 +1124,29 @@ dependencies = [ "tracing", ] +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -982,6 +1182,17 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "ipnet" version = "2.9.0" @@ -1027,6 +1238,12 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" version = "0.2.153" @@ -1053,6 +1270,17 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "libproc" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eb6497078a4c9c2aca63df56d8dce6eb4381d53a960f781a3a748f7ea97436d" +dependencies = [ + "bindgen", + "errno 0.3.8", + "libc", +] + [[package]] name = "libredox" version = "0.1.3" @@ -1063,6 +1291,12 @@ dependencies = [ "libc", ] +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + [[package]] name = "linux-raw-sys" version = "0.4.13" @@ -1097,6 +1331,29 @@ version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +[[package]] +name = "mac-sys-info" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5459fd50cfe85d72b92af2cd5105876aba1d533c14bfbb7383f86e4efa5325af" +dependencies = [ + "derive_more", + "env_logger", + "libc", + "log", + "serde", + "unix-exec-output-catcher", +] + +[[package]] +name = "mach2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +dependencies = [ + "libc", +] + [[package]] name = "matchit" version = "0.7.3" @@ -1153,6 +1410,23 @@ dependencies = [ "syn 2.0.58", ] +[[package]] +name = "memflow-native" +version = "0.2.4" +source = "git+https://github.com/memflow/memflow-native#ebc9a25335885adf057d77bc7a2882211609a8f8" +dependencies = [ + "goblin", + "itertools 0.12.1", + "libc", + "libproc", + "log", + "mac-sys-info", + "mach2", + "memflow", + "procfs", + "windows 0.54.0", +] + [[package]] name = "memmap" version = "0.7.0" @@ -1179,6 +1453,12 @@ dependencies = [ "unicase", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.2" @@ -1248,6 +1528,16 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "ntapi" version = "0.4.1" @@ -1278,7 +1568,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", ] @@ -1508,6 +1798,22 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "procfs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ca7f9f29bab5844ecd8fdb3992c5969b6622bb9609b9502fef9b4310e3f1f" +dependencies = [ + "backtrace", + "bitflags 1.3.2", + "byteorder", + "chrono", + "flate2", + "hex", + "lazy_static", + "rustix 0.36.17", +] + [[package]] name = "quote" version = "1.0.35" @@ -1530,6 +1836,7 @@ dependencies = [ "local-ip-address", "log", "memflow", + "memflow-native", "num-traits", "reqwest", "serde", @@ -1693,6 +2000,12 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc_version" version = "0.2.3" @@ -1711,6 +2024,20 @@ dependencies = [ "semver 1.0.22", ] +[[package]] +name = "rustix" +version = "0.36.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" +dependencies = [ + "bitflags 1.3.2", + "errno 0.3.8", + "io-lifetimes", + "libc", + "linux-raw-sys 0.1.4", + "windows-sys 0.45.0", +] + [[package]] name = "rustix" version = "0.38.32" @@ -1718,9 +2045,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ "bitflags 2.5.0", - "errno", + "errno 0.3.8", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.13", "windows-sys 0.52.0", ] @@ -1900,6 +2227,12 @@ dependencies = [ "digest", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -2003,7 +2336,7 @@ dependencies = [ "libc", "ntapi", "once_cell", - "windows", + "windows 0.52.0", ] [[package]] @@ -2041,10 +2374,19 @@ checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", - "rustix", + "rustix 0.38.32", "windows-sys 0.52.0", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" version = "1.0.58" @@ -2368,6 +2710,18 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unix-exec-output-catcher" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3c26d0ac22fbe8f782d88c493c74a35b1f062c65b03df15ccd4fc6c293c5198" +dependencies = [ + "derive_more", + "errno 0.2.8", + "libc", + "log", +] + [[package]] name = "url" version = "2.5.0" @@ -2541,6 +2895,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -2553,7 +2916,17 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-core", + "windows-core 0.52.0", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", "windows-targets 0.52.4", ] @@ -2566,6 +2939,34 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-result" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -2584,6 +2985,21 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -2614,6 +3030,12 @@ dependencies = [ "windows_x86_64_msvc 0.52.4", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -2626,6 +3048,12 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -2638,6 +3066,12 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -2650,6 +3084,12 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -2662,6 +3102,12 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -2674,6 +3120,12 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -2686,6 +3138,12 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" diff --git a/Cargo.toml b/Cargo.toml index a18e119..5eeda4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ edition = "2021" [dependencies] # memory memflow = "0.2.1" +memflow-native = { git = "https://github.com/memflow/memflow-native" } dataview = "1.0.1" # logging diff --git a/src/cli.rs b/src/cli.rs index 500c96b..2ac22ce 100755 --- a/src/cli.rs +++ b/src/cli.rs @@ -40,7 +40,9 @@ fn version() -> String { let commit_date = option_env!("VERGEN_GIT_COMMIT_DATE").unwrap_or("unknown"); let avail_cons = { let inventory = Inventory::scan(); - inventory.available_connectors().join(", ") + let mut avail = inventory.available_connectors(); + avail.push("native".into()); + avail.join(", ") }; format!(" {pkg_ver} (rev {git_hash})\nCommit Date: {commit_date}\nAvailable Connectors: {avail_cons}") diff --git a/src/dma/context/connector.rs b/src/dma/context/connector.rs index e9dbcd1..f314a9c 100755 --- a/src/dma/context/connector.rs +++ b/src/dma/context/connector.rs @@ -3,7 +3,8 @@ pub enum Connector { #[default] Qemu, Kvm, - Pcileech + Pcileech, + Native } impl ToString for Connector { @@ -12,6 +13,7 @@ impl ToString for Connector { Connector::Qemu => String::from("qemu"), Connector::Kvm => String::from("kvm"), Connector::Pcileech => String::from("pcileech"), + Connector::Native => String::from("native"), } } } diff --git a/src/dma/context/mod.rs b/src/dma/context/mod.rs index 755bc4b..7e9623a 100755 --- a/src/dma/context/mod.rs +++ b/src/dma/context/mod.rs @@ -46,11 +46,13 @@ impl DmaCtx { .args(connector_args) .os("win32") .build()? - } else { + } else if connector != Connector::Native { inventory.builder() - .connector(&connector.to_string()) - .os("win32") - .build()? + .connector(&connector.to_string()) + .os("win32") + .build()? + } else { + memflow_native::create_os(&Default::default(), Default::default())? } }; @@ -234,43 +236,6 @@ impl DmaCtx { None => None, } } - - // Todo: Optimize this function: find another way to do this - pub fn has_c4(&mut self, pawn: Address, entity_list: Address) -> anyhow::Result<bool> { - let mut has_c4 = false; - let wep_services = self.process.read_addr64(pawn + cs2dumper::client::C_BasePlayerPawn::m_pWeaponServices)?; - let wep_count: i32 = self.process.read(wep_services + cs2dumper::client::CPlayer_WeaponServices::m_hMyWeapons)?; - let wep_base = self.process.read_addr64(wep_services + cs2dumper::client::CPlayer_WeaponServices::m_hMyWeapons + 0x8)?; - - for wep_idx in 0..wep_count { - let handle: i32 = self.process.read(wep_base + wep_idx * 0x4)?; - if handle == -1 { - continue; - } - - let list_entry = self.process.read_addr64(entity_list + 0x8 * ((handle & 0x7FFF) >> 9) + 16)?; - if let Some(wep_ptr) = { - if list_entry.is_null() || !list_entry.is_valid() { - None - } else { - let ptr = self.process.read_addr64(list_entry + 120 * (handle & 0x1FF))?; - Some(ptr) - } - } - { - let wep_data = self.process.read_addr64(wep_ptr + cs2dumper::client::C_BaseEntity::m_nSubclassID + 0x8)?; - let id: i32 = self.process.read(wep_data + cs2dumper::client::CCSWeaponBaseVData::m_WeaponType)?; - - if id == 7 { - has_c4 = true; - break; - } - } - } - - Ok(has_c4) - } - } diff --git a/src/dma/mod.rs b/src/dma/mod.rs index 5e926e7..72d8746 100755 --- a/src/dma/mod.rs +++ b/src/dma/mod.rs @@ -1,6 +1,6 @@ use std::{thread, time::{Duration, Instant}}; -use memflow::{os::Process, mem::MemoryView}; +use memflow::{mem::MemoryView, os::Process, types::Address}; use crate::{enums::PlayerType, comms::{EntityData, PlayerData, RadarData, ArcRwlockRadarData, BombData}}; @@ -19,6 +19,8 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_ // For read timing let mut last_bomb_dropped = false; let mut last_bomb_planted = false; + let mut last_freeze_period = false; + let mut last_round_start_count = 0u8; let mut last_tick_count = 0; let mut last_big_read = Instant::now(); @@ -50,12 +52,33 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_ data.update_bomb(&mut ctx); } - if !data.bomb_dropped && last_bomb_dropped && !data.bomb_planted { + if data.bomb_dropped != last_bomb_dropped && !data.bomb_planted { + log::debug!("Bomb holder recheck due to bomb drop status"); data.recheck_bomb_holder = true; } + if last_freeze_period != data.freeze_period { + log::debug!("Bomb holder recheck due to freeze time"); + data.recheck_bomb_holder = true; + } + + if last_round_start_count != data.round_start_count { + log::debug!("Bomb holder recheck due to round start"); + data.recheck_bomb_holder = true; + } + + last_freeze_period = data.freeze_period; + last_round_start_count = data.round_start_count; + if data.recheck_bomb_holder { - let pawns = data.players.clone().into_iter().map(|(_, pawn)| pawn).collect(); + let mut pawns: Vec<Address> = data.players + .clone() + .into_iter() + .map(|(_, pawn)| pawn) + .collect(); + + pawns.push(data.local_pawn.into()); + data.bomb_holder = ctx.get_c4_holder(pawns, data.entity_list.into()); data.recheck_bomb_holder = false; } diff --git a/src/dma/threaddata/mod.rs b/src/dma/threaddata/mod.rs index 40df3c0..d486175 100755 --- a/src/dma/threaddata/mod.rs +++ b/src/dma/threaddata/mod.rs @@ -23,6 +23,12 @@ pub struct CsData { pub local_pawn: u64, pub is_dead: bool, pub tick_count: i32, + pub freeze_period: bool, + pub round_start_count: u8, + pub highest_index: i32, + pub map: String, + + // Bomb pub bomb_dropped: bool, pub bomb_planted: bool, pub bomb_planted_stamp: Option<Instant>, @@ -32,8 +38,6 @@ pub struct CsData { pub bomb_defuse_length: f32, pub bomb_exploded: bool, pub bomb_defused: bool, - pub highest_index: i32, - pub map: String } @@ -161,7 +165,7 @@ impl CsData { let mut bomb_being_defused = 0u8; let mut bomb_exploded = 0u8; let mut bomb_defused = 0u8; - + let mut freeze_period = 0u8; { // Globals let tick_count_addr = (self.globals + 0x40).into(); @@ -170,6 +174,8 @@ impl CsData { // Gamerules let bomb_dropped_addr = (self.gamerules + cs2dumper::client::C_CSGameRules::m_bBombDropped as u64).into(); let bomb_planted_addr = (self.gamerules + cs2dumper::client::C_CSGameRules::m_bBombPlanted as u64).into(); + let total_rounds_addr = (self.gamerules + cs2dumper::client::C_CSGameRules::m_bFreezePeriod as u64).into(); + let round_start_count_addr = (self.gamerules + cs2dumper::client::C_CSGameRules::m_nRoundStartCount as u64).into(); // Game Entity System let highest_index_addr = (self.game_ent_sys + cs2dumper::offsets::client_dll::dwGameEntitySystem_getHighestEntityIndex as u64).into(); @@ -187,6 +193,8 @@ impl CsData { batcher.read_into(tick_count_addr, &mut self.tick_count); batcher.read_into(bomb_dropped_addr, &mut bomb_dropped); batcher.read_into(bomb_planted_addr, &mut bomb_planted); + batcher.read_into(total_rounds_addr, &mut freeze_period); + batcher.read_into(round_start_count_addr, &mut self.round_start_count); batcher.read_into(highest_index_addr, &mut self.highest_index); batcher.read_into(map_addr, &mut map_ptr); } @@ -237,6 +245,7 @@ impl CsData { self.bomb_exploded = bomb_exploded != 0; self.bomb_being_defused = bomb_being_defused != 0; self.bomb_defused = bomb_defused != 0; + self.freeze_period = freeze_period != 0; } pub fn update_pointers(&mut self, ctx: &mut DmaCtx) { From 16e2d361dcb81b9f7577a3d16f173f638b34daf9 Mon Sep 17 00:00:00 2001 From: Janek <development@superyu.xyz> Date: Sun, 21 Apr 2024 19:20:55 +0200 Subject: [PATCH 3/7] fix: bomb holder when planted or dropped --- src/dma/context/mod.rs | 9 +++++++-- src/dma/mod.rs | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/dma/context/mod.rs b/src/dma/context/mod.rs index 7e9623a..4514925 100755 --- a/src/dma/context/mod.rs +++ b/src/dma/context/mod.rs @@ -7,7 +7,7 @@ use num_traits::FromPrimitive; use crate::{structs::Vec3, enums::TeamID}; -use super::cs2dumper; +use super::{cs2dumper, threaddata::CsData}; pub struct DmaCtx { pub process: IntoProcessInstanceArcBox<'static>, @@ -146,7 +146,12 @@ impl DmaCtx { Ok(is_controller) } - pub fn get_c4_holder(&mut self, pawns: Vec<Address>, entity_list: Address) -> Option<Address> { + pub fn get_c4_holder(&mut self, pawns: Vec<Address>, entity_list: Address, csdata: &CsData) -> Option<Address> { + + if csdata.bomb_dropped || csdata.bomb_planted { + return None; + } + // (pawn, wep_services, wep_count, wep_base) let mut data_vec: Vec<(Address, u64, i32, u64)> = pawns .into_iter() diff --git a/src/dma/mod.rs b/src/dma/mod.rs index 72d8746..c735538 100755 --- a/src/dma/mod.rs +++ b/src/dma/mod.rs @@ -79,7 +79,7 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_ pawns.push(data.local_pawn.into()); - data.bomb_holder = ctx.get_c4_holder(pawns, data.entity_list.into()); + data.bomb_holder = ctx.get_c4_holder(pawns, data.entity_list.into(), &data); data.recheck_bomb_holder = false; } From e89a0b867169b148cad9e79de834cd735e40b1ee Mon Sep 17 00:00:00 2001 From: Janek <development@superyu.xyz> Date: Tue, 23 Apr 2024 21:35:59 +0200 Subject: [PATCH 4/7] Update mod.rs --- src/dma/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dma/mod.rs b/src/dma/mod.rs index c735538..c57f8d1 100755 --- a/src/dma/mod.rs +++ b/src/dma/mod.rs @@ -52,7 +52,7 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_ data.update_bomb(&mut ctx); } - if data.bomb_dropped != last_bomb_dropped && !data.bomb_planted { + if data.bomb_dropped != last_bomb_dropped && data.bomb_planted != last_bomb_planted { log::debug!("Bomb holder recheck due to bomb drop status"); data.recheck_bomb_holder = true; } From 3e31733f069a001d13b4fd353ce83240ede8fab6 Mon Sep 17 00:00:00 2001 From: Janek <development@superyu.xyz> Date: Tue, 23 Apr 2024 21:40:51 +0200 Subject: [PATCH 5/7] Update mod.rs --- src/dma/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dma/mod.rs b/src/dma/mod.rs index c57f8d1..b63495e 100755 --- a/src/dma/mod.rs +++ b/src/dma/mod.rs @@ -52,8 +52,8 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_ data.update_bomb(&mut ctx); } - if data.bomb_dropped != last_bomb_dropped && data.bomb_planted != last_bomb_planted { - log::debug!("Bomb holder recheck due to bomb drop status"); + if data.bomb_dropped != last_bomb_dropped || data.bomb_planted != last_bomb_planted { + log::debug!("Bomb holder recheck due to bomb status"); data.recheck_bomb_holder = true; } From 831d232d237d4139b6842bf0f2dde1bb855695b5 Mon Sep 17 00:00:00 2001 From: Janek <superyu.development@gmail.com> Date: Fri, 26 Apr 2024 15:19:42 +0200 Subject: [PATCH 6/7] fix for isscoped --- src/dma/context/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dma/context/mod.rs b/src/dma/context/mod.rs index 4514925..0cbfabc 100755 --- a/src/dma/context/mod.rs +++ b/src/dma/context/mod.rs @@ -105,7 +105,7 @@ impl DmaCtx { batcher.read_into(pawn + cs2dumper::client::C_BaseEntity::m_iHealth, &mut health); batcher.read_into(controller + cs2dumper::client::C_BaseEntity::m_iTeamNum, &mut team); batcher.read_into(pawn + cs2dumper::client::C_CSPlayerPawnBase::m_pClippingWeapon, &mut clipping_weapon); - batcher.read_into(pawn + cs2dumper::client::C_CSPlayerPawnBase::m_bIsScoped, &mut is_scoped); + batcher.read_into(pawn + cs2dumper::client::C_CSPlayerPawn::m_bIsScoped, &mut is_scoped); } let team = TeamID::from_i32(team); From f3f08cbede01075818e542f3f31cba8219719bbc Mon Sep 17 00:00:00 2001 From: Superyu1337 <development@superyu.xyz> Date: Thu, 28 Nov 2024 22:41:25 +0100 Subject: [PATCH 7/7] fix: update dependencies. Resolve build issues. (Not tested ingame) --- Cargo.lock | 563 +++++++++++++++++++++++++------------- Cargo.toml | 36 +-- build.rs | 20 +- src/cli.rs | 6 +- src/dma/threaddata/mod.rs | 6 +- 5 files changed, 409 insertions(+), 222 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cdaf892..bb33b80 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -122,9 +122,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.81" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "as_derive_utils" @@ -180,7 +180,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -202,9 +202,9 @@ checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", @@ -231,7 +231,7 @@ dependencies = [ "sync_wrapper 1.0.0", "tokio", "tokio-tungstenite", - "tower", + "tower 0.5.1", "tower-layer", "tower-service", "tracing", @@ -239,9 +239,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", @@ -252,7 +252,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.0", "tower-layer", "tower-service", "tracing", @@ -275,9 +275,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bindgen" @@ -288,7 +288,7 @@ dependencies = [ "bitflags 2.5.0", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.12.1", "lazy_static", "lazycell", "proc-macro2", @@ -296,7 +296,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -445,8 +445,11 @@ checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", + "js-sys", "num-traits", - "windows-targets 0.52.4", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", ] [[package]] @@ -462,9 +465,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -472,26 +475,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.1", + "strsim", ] [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -609,9 +612,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -619,27 +622,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 2.0.58", + "strsim", + "syn 2.0.89", ] [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -672,6 +675,37 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.89", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -745,7 +779,7 @@ checksum = "ba7795da175654fe16979af73f81f26a8ea27638d8d9823d317016888a63dc4c" dependencies = [ "num-traits", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -944,9 +978,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "goblin" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07a4ffed2093b118a525b1d8f5204ae274faed5604537caf7135d0f18d9887" +checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" dependencies = [ "log", "plain", @@ -1088,6 +1122,23 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -1119,7 +1170,7 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", + "tower 0.4.13", "tower-service", "tracing", ] @@ -1217,6 +1268,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -1267,7 +1327,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -1305,14 +1365,14 @@ checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "local-ip-address" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136ef34e18462b17bf39a7826f8f3bbc223341f8e83822beb8b77db9a3d49696" +checksum = "3669cf5561f8d27e8fc84cc15e58350e70f557d4d65f70e3154e54cd2f8e1782" dependencies = [ "libc", "neli", "thiserror", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -1327,9 +1387,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "mac-sys-info" @@ -1368,14 +1428,15 @@ checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memflow" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "441730cf8e48d671cead445034c076acc2634fa95ba032feb5be78945c581551" +checksum = "df612ab27a15bc64554a6bc93cf80493b9bff753834aebea044089ffdf6295b6" dependencies = [ "abi_stable", "bitflags 1.3.2", "bumpalo", "cglue", + "chrono", "coarsetime", "dataview 1.0.1", "dirs", @@ -1388,10 +1449,12 @@ dependencies = [ "memflow-derive", "memmap", "no-std-compat", + "num-traits", "once_cell", "pelite", "rangemap", "serde", + "serde_json", "smallvec", "toml", "x86_64", @@ -1407,7 +1470,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -1424,7 +1487,7 @@ dependencies = [ "mach2", "memflow", "procfs", - "windows 0.54.0", + "windows", ] [[package]] @@ -1538,15 +1601,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "ntapi" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" -dependencies = [ - "winapi", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -1555,9 +1609,9 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1619,7 +1673,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -1740,7 +1794,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -1791,9 +1845,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -1825,14 +1879,14 @@ dependencies = [ [[package]] name = "radarflow" -version = "0.2.4" +version = "0.2.5" dependencies = [ "anyhow", "axum", "clap", "dataview 1.0.1", "enum-primitive-derive", - "itertools 0.12.1", + "itertools 0.13.0", "local-ip-address", "log", "memflow", @@ -1843,9 +1897,9 @@ dependencies = [ "serde_json", "simple_logger", "tokio", - "tower", + "tower 0.5.1", "tower-http", - "vergen", + "vergen-gitcl", ] [[package]] @@ -1915,9 +1969,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -1927,9 +1981,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1938,9 +1992,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "repr_offset" @@ -1953,9 +2007,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.2" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d66674f2b6fb864665eea7a3c1ac4e3dfacd2fda83cf6f935a612e01b0e3338" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64", "bytes", @@ -1968,6 +2022,7 @@ dependencies = [ "http-body", "http-body-util", "hyper", + "hyper-rustls", "hyper-tls", "hyper-util", "ipnet", @@ -1982,7 +2037,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.0", "system-configuration", "tokio", "tokio-native-tls", @@ -1991,7 +2046,22 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", + "windows-registry", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", ] [[package]] @@ -2052,19 +2122,49 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ - "base64", + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -2104,7 +2204,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -2156,31 +2256,32 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] name = "serde_json" -version = "1.0.115" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -2244,9 +2345,9 @@ dependencies = [ [[package]] name = "simple_logger" -version = "4.3.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e7e46c8c90251d47d08b28b8a419ffb4aede0f87c2eea95e17d1d5bacbf3ef1" +checksum = "e8c5dfa5e08767553704aa0ffd9d9794d527103c736aba9854773851fd7497eb" dependencies = [ "colored", "log", @@ -2280,10 +2381,10 @@ dependencies = [ ] [[package]] -name = "strsim" -version = "0.10.0" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "strsim" @@ -2291,6 +2392,12 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "1.0.109" @@ -2304,9 +2411,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ "proc-macro2", "quote", @@ -2324,37 +2431,26 @@ name = "sync_wrapper" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384595c11a4e2969895cad5a8c4029115f5ab956a9e5ef4de79d11a426e5f20c" - -[[package]] -name = "sysinfo" -version = "0.30.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b1a378e48fb3ce3a5cf04359c456c9c98ff689bcf1c1bc6e6a31f247686f275" dependencies = [ - "cfg-if", - "core-foundation-sys", - "libc", - "ntapi", - "once_cell", - "windows 0.52.0", + "futures-core", ] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -2404,14 +2500,14 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -2432,9 +2528,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -2482,7 +2578,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] [[package]] @@ -2496,10 +2592,21 @@ dependencies = [ ] [[package]] -name = "tokio-tungstenite" -version = "0.21.0" +name = "tokio-rustls" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", @@ -2572,10 +2679,26 @@ dependencies = [ ] [[package]] -name = "tower-http" -version = "0.5.2" +name = "tower" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags 2.5.0", "bytes", @@ -2598,15 +2721,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -2651,9 +2774,9 @@ checksum = "e78122066b0cb818b8afd08f7ed22f7fdbc3e90815035726f0840d0d26c0747a" [[package]] name = "tungstenite" -version = "0.21.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" dependencies = [ "byteorder", "bytes", @@ -2664,7 +2787,6 @@ dependencies = [ "rand", "sha1", "thiserror", - "url", "utf-8", ] @@ -2722,6 +2844,12 @@ dependencies = [ "log", ] +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.5.0" @@ -2753,18 +2881,43 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vergen" -version = "8.3.1" +version = "9.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27d6bdd219887a9eadd19e1c34f32e47fa332301184935c6d9bca26f3cca525" +checksum = "349ed9e45296a581f455bc18039878f409992999bc1d5da12a6800eb18c8752f" dependencies = [ "anyhow", "cargo_metadata", - "cfg-if", + "derive_builder", "regex", "rustc_version 0.4.0", "rustversion", - "sysinfo", "time", + "vergen-lib", +] + +[[package]] +name = "vergen-gitcl" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3a7f91caabecefc3c249fd864b11d4abe315c166fbdb568964421bccfd2b7a" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", + "time", + "vergen", + "vergen-lib", +] + +[[package]] +name = "vergen-lib" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0c767e6751c09fc85cde58722cf2f1007e80e4c8d5a4321fc90d83dc54ca147" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", ] [[package]] @@ -2824,7 +2977,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", "wasm-bindgen-shared", ] @@ -2858,7 +3011,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2910,16 +3063,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" -dependencies = [ - "windows-core 0.52.0", - "windows-targets 0.52.4", -] - [[package]] name = "windows" version = "0.54.0" @@ -2927,7 +3070,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ "windows-core 0.54.0", - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -2936,7 +3079,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -2945,8 +3088,19 @@ version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ - "windows-result", - "windows-targets 0.52.4", + "windows-result 0.1.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", ] [[package]] @@ -2955,7 +3109,26 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", ] [[package]] @@ -2982,7 +3155,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3017,17 +3199,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3044,9 +3227,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -3062,9 +3245,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -3080,9 +3263,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -3098,9 +3287,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -3116,9 +3305,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -3134,9 +3323,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -3152,9 +3341,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -3165,16 +3354,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "x86_64" version = "0.14.12" @@ -3204,5 +3383,11 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.89", ] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/Cargo.toml b/Cargo.toml index 5eeda4a..9b15988 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "radarflow" -version = "0.2.4" +version = "0.2.5" authors = ["Janek S <development@superyu.xyz"] edition = "2021" @@ -8,39 +8,39 @@ edition = "2021" [dependencies] # memory -memflow = "0.2.1" +memflow = "0.2.3" memflow-native = { git = "https://github.com/memflow/memflow-native" } dataview = "1.0.1" # logging -log = "0.4.21" -simple_logger = "4.3.3" +log = "0.4.22" +simple_logger = "5.0.0" # error handling -anyhow = "1.0.81" +anyhow = "1.0.93" # derive stuff enum-primitive-derive = "0.3.0" -num-traits = "0.2.18" -serde = { version = "1.0.197", features = ["derive"] } -serde_json = "1.0.115" -clap = { version = "4.5.4", features = ["derive", "string"] } +num-traits = "0.2.19" +serde = { version = "1.0.215", features = ["derive"] } +serde_json = "1.0.133" +clap = { version = "4.5.21", features = ["derive", "string"] } # tokio tokio = { version = "1.37.0", features = ["full"] } # networking -axum = { version = "0.7.5", features = ["ws"] } -tower-http = { version = "0.5.2", features = ["fs"] } -tower = "0.4.13" -local-ip-address = "0.6.1" +axum = { version = "0.7.9", features = ["ws"] } +tower-http = { version = "0.6.2", features = ["fs"] } +tower = "0.5.1" +local-ip-address = "0.6.3" # other -itertools = "0.12.1" +itertools = "0.13.0" [build-dependencies] -reqwest = { version = "0.12.2", features = ["blocking"] } -serde = { version = "1.0.197", features = ["derive"] } -serde_json = "1.0.115" -vergen = { version = "8.3.1", features = ["build", "cargo", "git", "gitcl", "rustc", "si"] } +reqwest = { version = "0.12.9", features = ["blocking"] } +serde = { version = "1.0.215", features = ["derive"] } +serde_json = "1.0.133" +vergen-gitcl = { version = "1.0.0", features = ["build", "cargo", "rustc",] } diff --git a/build.rs b/build.rs index 7c692f0..51dabfc 100755 --- a/build.rs +++ b/build.rs @@ -1,7 +1,7 @@ use std::error::Error; use serde::{Deserialize, Serialize}; -use vergen::EmitBuilder; +use vergen_gitcl::{Emitter, GitclBuilder}; #[derive(Clone, Deserialize, Serialize)] struct InfoJson { @@ -36,29 +36,27 @@ fn build_number() -> Result<(), Box<dyn Error>> { fn main() -> Result<(), Box<dyn Error>> { download( - "https://raw.githubusercontent.com/a2x/cs2-dumper/main/output/client.dll.rs", + "https://raw.githubusercontent.com/a2x/cs2-dumper/refs/heads/main/output/client_dll.rs", "./src/dma/cs2dumper/client_mod.rs" ).expect("Failed to download build file \"client.dll.rs\""); download( - "https://raw.githubusercontent.com/a2x/cs2-dumper/main/output/offsets.rs", + "https://raw.githubusercontent.com/a2x/cs2-dumper/refs/heads/main/output/offsets.rs", "./src/dma/cs2dumper/offsets_mod.rs" ).expect("Failed to download build file \"offsets.rs\""); download( - "https://raw.githubusercontent.com/a2x/cs2-dumper/main/output/engine2.dll.rs", + "https://raw.githubusercontent.com/a2x/cs2-dumper/refs/heads/main/output/engine2_dll.rs", "./src/dma/cs2dumper/engine2_mod.rs" ).expect("Failed to download build file \"engine2.dll.rs\""); build_number()?; - EmitBuilder::builder() - .git_sha(true) - .git_commit_date() - .cargo_debug() - .cargo_target_triple() - .rustc_semver() - .rustc_llvm_version() + let gitcl = GitclBuilder::all_git()?; + + + Emitter::new() + .add_instructions(&gitcl)? .emit()?; Ok(()) diff --git a/src/cli.rs b/src/cli.rs index 2ac22ce..3d83ab6 100755 --- a/src/cli.rs +++ b/src/cli.rs @@ -45,7 +45,11 @@ fn version() -> String { avail.join(", ") }; - format!(" {pkg_ver} (rev {git_hash})\nCommit Date: {commit_date}\nAvailable Connectors: {avail_cons}") + format!( + "{pkg_ver} (rev {git_hash})\n\ + Commit Date: {commit_date}\n\ + Available Connectors: {avail_cons}\n" + ) } fn port_in_range(s: &str) -> Result<u16, String> { diff --git a/src/dma/threaddata/mod.rs b/src/dma/threaddata/mod.rs index d486175..0dc8060 100755 --- a/src/dma/threaddata/mod.rs +++ b/src/dma/threaddata/mod.rs @@ -21,7 +21,7 @@ pub struct CsData { // Common pub local: u64, pub local_pawn: u64, - pub is_dead: bool, + // pub is_dead: bool, // TODO: Why is this here? pub tick_count: i32, pub freeze_period: bool, pub round_start_count: u8, @@ -178,7 +178,7 @@ impl CsData { let round_start_count_addr = (self.gamerules + cs2dumper::client::C_CSGameRules::m_nRoundStartCount as u64).into(); // Game Entity System - let highest_index_addr = (self.game_ent_sys + cs2dumper::offsets::client_dll::dwGameEntitySystem_getHighestEntityIndex as u64).into(); + let highest_index_addr = (self.game_ent_sys + cs2dumper::offsets::client_dll::dwGameEntitySystem_highestEntityIndex as u64).into(); let mut batcher = ctx.process.batcher(); batcher.read_into( @@ -237,7 +237,7 @@ impl CsData { } - let map_string = ctx.process.read_char_string_n(map_ptr.into(), 32).unwrap_or(String::from("<empty>")); + let map_string = ctx.process.read_utf8_lossy(map_ptr.into(), 32).unwrap_or(String::from("<empty>")); self.map = map_string; self.bomb_dropped = bomb_dropped != 0;