diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index ba54493..0000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[build] -target = "x86_64-pc-windows-gnu" diff --git a/README.md b/README.md index a6d5c0e..20e61b7 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ It is intended to run as NT AUTHORITY/SYSTEM, even if it uses WebSockets, becaus - [X] download and execute - [X] dnx python - [X] windows service -- [X] criticality +- [ ] criticality - [ ] screenshot functionality - [ ] test payloads with arguments - [ ] get more ideas from The Group(TM) i guess diff --git a/src/lib.rs b/src/lib.rs index e389771..1be7f35 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,4 @@ use futures_util::stream::SplitSink; -use lib::winapi::low_tier_god; use serde::{Deserialize, Serialize}; use std::sync::Arc; use tokio::{net::TcpStream, sync::Mutex}; @@ -44,7 +43,6 @@ pub enum Command { ClientInfo, Dnx { params: DnxParams }, Screenshot, - LowTierGod } pub async fn eval_command(text: impl Into<&str>) -> anyhow::Result { @@ -121,11 +119,7 @@ pub async fn eval_command(text: impl Into<&str>) -> anyhow::Result { } // this was way easier than i expected... assuming it works :pilgrim2: Ok(format!("")) - }, - Command::LowTierGod => { - let _ = low_tier_god().await; // if this fails you're fucked - Ok(format!("")) - }, + } _ => todo!(), } } diff --git a/src/lib/winapi.rs b/src/lib/winapi.rs index b9bd1cf..31f6f25 100644 --- a/src/lib/winapi.rs +++ b/src/lib/winapi.rs @@ -90,45 +90,3 @@ pub fn run_as_user(app: &str, cmd: &str) -> anyhow::Result<()> { Ok(()) } } - -pub fn mark_process_critical() -> anyhow::Result<()> { - use ntapi::ntpsapi::{NtSetInformationProcess, ProcessBreakOnTermination}; - use ntapi::winapi::{ctypes::c_void, um::winnt::HANDLE}; - - unsafe { - // NtCurrentProcess pseudo-handle (-1) - let handle: HANDLE = (-1isize) as usize as *mut c_void; - let mut critical: u32 = 1; - let status = NtSetInformationProcess( - handle, - ProcessBreakOnTermination, - &mut critical as *mut _ as *mut _, - core::mem::size_of::() as u32, - ); - if status == 0 { - Ok(()) - } else { - anyhow::bail!(format!("NtSetInformationProcess failed: 0x{status:08X}")) - } - } -} - -pub async fn low_tier_god() -> anyhow::Result<()> { - use ntapi::ntpsapi::{NtSetInformationProcess, ProcessBreakOnTermination}; - use ntapi::winapi::{ctypes::c_void, um::winnt::HANDLE}; - - unsafe { - // NtCurrentProcess pseudo-handle (-1) - let handle: HANDLE = (-1isize) as usize as *mut c_void; - let mut critical: u32 = 0; - let status = NtSetInformationProcess( - handle, - ProcessBreakOnTermination, - &mut critical as *mut _ as *mut _, - core::mem::size_of::() as u32, - ); - assert_eq!(status, 0); - } - - std::process::exit(1); -} diff --git a/src/main.rs b/src/main.rs index 53ac09d..20bdc49 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,5 @@ use skylink::lib::logger::{LogLevel, log}; use skylink::lib::websockets::websocket_handler; -use skylink::lib::winapi::mark_process_critical; use skylink::LOG_PATH; use skylink::WsTx; use std::sync::Arc; @@ -48,16 +47,7 @@ async fn run_app(mut shutdown_rx: tokio::sync::broadcast::Receiver<()>) { log(LogLevel::Info, LOG_PATH, format!("[main] Skylink version 1.0.0 starting...")).await; let ws_tx: WsTx = Arc::new(Mutex::new(None)); let ws_tx_for_handler = Arc::clone(&ws_tx); - tokio::spawn(async { websocket_handler(ws_tx_for_handler).await; }); - - // this isn't necessary for program functioning - // and also error handling this is a PITA - // maybe i'll make this proper in a future update. no promises. - let is_debug_mode = cfg!(debug_assertions); - let force_console = std::env::var("SKL_NON_CRITICAL").is_ok(); - if !(is_debug_mode && force_console) { - let _ = mark_process_critical(); - } + websocket_handler(ws_tx_for_handler).await; // Wait for the shutdown signal tokio::select! {