modified: Cargo.lock

modified:   frida_core/Cargo.toml
	modified:   frida_core/src/android_tun.rs
This commit is contained in:
Michael Wain 2024-12-11 01:49:00 +03:00
parent 3c17d77285
commit 7303c28370
3 changed files with 34 additions and 5 deletions

13
Cargo.lock generated
View File

@ -1495,6 +1495,17 @@ version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
[[package]]
name = "filedescriptor"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e"
dependencies = [
"libc",
"thiserror 1.0.69",
"winapi",
]
[[package]] [[package]]
name = "flate2" name = "flate2"
version = "1.0.35" version = "1.0.35"
@ -1616,10 +1627,12 @@ dependencies = [
"dirs 5.0.1", "dirs 5.0.1",
"embed-resource", "embed-resource",
"env_logger", "env_logger",
"filedescriptor",
"futures", "futures",
"generic-array", "generic-array",
"hex", "hex",
"iced", "iced",
"libc",
"log", "log",
"nix", "nix",
"packet", "packet",

View File

@ -48,4 +48,8 @@ embed-resource = "2.3"
nix = { version = "0.29.0", features = ["socket"] } nix = { version = "0.29.0", features = ["socket"] }
[target.'cfg(target_os="linux")'.dependencies] [target.'cfg(target_os="linux")'.dependencies]
tokio-tun = "0.12.1" tokio-tun = "0.12.1"
[target.'cfg(target_os="android")'.dependencies]
libc = "0.2"
filedescriptor = "0.8.2"

View File

@ -1,15 +1,27 @@
use tokio::fs::File; //use tokio::fs::File;
use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::io::{AsyncReadExt, AsyncWriteExt};
use std::error::Error; use std::error::Error;
use std::os::fd::FromRawFd; use std::os::fd::FromRawFd;
use std::fs::File;
use libc::fdopen;
use std::ffi::CString;
pub fn create(cfg: i32) -> (DeviceReader, DeviceWriter) { pub fn create(cfg: i32) -> (DeviceReader, DeviceWriter) {
// check this if android build won't work // check this if android build won't work
/*let mode_read = CString::new("r").unwrap();
let mode_write = CString::new("w").unwrap();
let fd1 = cfg.clone();
let fd2 = fd1.clone();
let reader = unsafe { fdopen(fd1, mode_read.as_ptr()) };
let writer = unsafe { fdopen(fd2, mode_write.as_ptr()) };*/
let fd1 = cfg.clone(); let fd1 = cfg.clone();
let fd2 = fd1.clone(); let fd2 = fd1.clone();
let mut reader = unsafe { File::from_raw_fd(fd1) }; let mut reader = unsafe { File::from_raw_fd(fd1) };
let mut writer = unsafe { File::from_raw_fd(fd2) }; let mut writer = unsafe { File::from_raw_fd(fd2) };
(DeviceReader {reader}, DeviceWriter {writer}) (DeviceReader {reader}, DeviceWriter {writer})
} }
@ -23,12 +35,12 @@ pub struct DeviceReader {
impl DeviceWriter { impl DeviceWriter {
pub async fn write(&mut self, buf: &Vec<u8>) -> Result<usize, Box<dyn Error>> { pub async fn write(&mut self, buf: &Vec<u8>) -> Result<usize, Box<dyn Error>> {
Ok(self.writer.write(buf).await?) Ok(self.writer.write(buf)?)
} }
} }
impl DeviceReader { impl DeviceReader {
pub async fn read(&mut self, buf: &mut Vec<u8>) -> Result<usize, Box<dyn Error>> { pub async fn read(&mut self, buf: &mut Vec<u8>) -> Result<usize, Box<dyn Error>> {
Ok(self.reader.read(buf).await?) Ok(self.reader.read(buf)?)
} }
} }