From 0690c0f7814f41cb298683743aa7e4a8f213d3ef Mon Sep 17 00:00:00 2001 From: alterdekim Date: Tue, 10 Dec 2024 20:01:37 +0300 Subject: [PATCH] Refactoring of frida_core and android_tun creation modified: frida_client/src/client.rs new file: frida_core/src/android_tun.rs modified: frida_core/src/lib.rs deleted: frida_core/src/main.rs deleted: frida_core/src/tun.rs --- frida_client/src/client.rs | 4 ++-- frida_core/src/android_tun.rs | 29 +++++++++++++++++++++++++++++ frida_core/src/lib.rs | 9 +++++++-- frida_core/src/main.rs | 35 ----------------------------------- frida_core/src/tun.rs | 14 -------------- 5 files changed, 38 insertions(+), 53 deletions(-) create mode 100644 frida_core/src/android_tun.rs delete mode 100644 frida_core/src/main.rs delete mode 100644 frida_core/src/tun.rs diff --git a/frida_client/src/client.rs b/frida_client/src/client.rs index 86cb117..bccaa42 100644 --- a/frida_client/src/client.rs +++ b/frida_client/src/client.rs @@ -195,7 +195,7 @@ pub mod desktop { use crate::client::general::{CoreVpnClient, VpnClient}; use frida_core::config::ClientConfiguration; - use frida_core::tun::create_tun; + use frida_core::create; use frida_core::device::AbstractDevice; use log::info; use tokio::net::UdpSocket; @@ -320,7 +320,7 @@ pub mod desktop { let sock = UdpSocket::bind(("0.0.0.0", 0)).await.unwrap(); sock.connect(&self.client_config.server.endpoint).await.unwrap(); - let (dev_reader, dev_writer) = create_tun(config); + let (dev_reader, dev_writer) = create(config); let mut client = CoreVpnClient{ client_config: self.client_config.clone(), close_token: tokio_util::sync::CancellationToken::new()}; diff --git a/frida_core/src/android_tun.rs b/frida_core/src/android_tun.rs new file mode 100644 index 0000000..bdd3a12 --- /dev/null +++ b/frida_core/src/android_tun.rs @@ -0,0 +1,29 @@ + + +pub fn create(cfg: i32) -> (DeviceReader, DeviceWriter) { + // check this if android build won't work + let mut reader = unsafe { File::from_raw_fd(cfg) }; + let mut writer = unsafe { File::from_raw_fd(cfg) }; + + (DeviceReader {reader}, DeviceWriter {writer}) +} + +pub struct DeviceWriter { + writer: File +} + +pub struct DeviceReader { + reader: File +} + +impl DeviceWriter { + pub async fn write(&mut self, buf: &Vec) -> Result> { + Ok(self.writer.write(buf).await?) + } +} + +impl DeviceReader { + pub async fn read(&mut self, buf: &mut Vec) -> Result> { + Ok(self.reader.read_buf(buf).await?) + } +} \ No newline at end of file diff --git a/frida_core/src/lib.rs b/frida_core/src/lib.rs index be8843a..fd8fbce 100644 --- a/frida_core/src/lib.rs +++ b/frida_core/src/lib.rs @@ -1,5 +1,4 @@ pub mod device; -pub mod tun; pub mod obfs; pub mod udp; pub mod config; @@ -20,4 +19,10 @@ pub use r#linux_tun::*; mod mac_tun; #[cfg(target_os = "macos")] -pub use r#mac_tun::*; \ No newline at end of file +pub use r#mac_tun::*; + +#[cfg(target_os = "android")] +mod android_tun; + +#[cfg(target_os = "android")] +pub use r#android_tun::*; \ No newline at end of file diff --git a/frida_core/src/main.rs b/frida_core/src/main.rs deleted file mode 100644 index 92bfeeb..0000000 --- a/frida_core/src/main.rs +++ /dev/null @@ -1,35 +0,0 @@ -use env_logger::Builder; -use log::{info, error, LevelFilter}; - -mod device; -mod tun; - -#[cfg(target_os = "windows")] -mod win_tun; - -#[cfg(target_os = "linux")] -mod linux_tun; - -#[tokio::main] -async fn main() { - Builder::new() - .filter(None, LevelFilter::Info) - .init(); - - let (reader, _writer) = tun::create_tun(); - - let a = tokio::spawn(async move { - let mut buf = Vec::new(); - info!("Started!"); - loop { - // info!("We've got {} bytes of data!", c) - let r = reader.read(&mut buf).await; - match r { - Ok(_c) => {}, - Err(_e) => error!("We've got a nasty error message!") - } - } - }); - - let _ = a.await; -} \ No newline at end of file diff --git a/frida_core/src/tun.rs b/frida_core/src/tun.rs deleted file mode 100644 index 3cc5c50..0000000 --- a/frida_core/src/tun.rs +++ /dev/null @@ -1,14 +0,0 @@ -use crate::device::AbstractDevice; - -#[cfg(target_os = "windows")] -use crate::win_tun::{DeviceReader, DeviceWriter, create}; - -#[cfg(target_os = "linux")] -use crate::linux_tun::{DeviceReader, DeviceWriter, create}; - -#[cfg(target_os = "macos")] -use crate::mac_tun::{DeviceReader, DeviceWriter, create}; - -pub fn create_tun(cfg: AbstractDevice) -> (DeviceReader, DeviceWriter) { - create(cfg) -} \ No newline at end of file